gpt4 book ai didi

mysql - SQL 将 a 引用到 b,将 b 引用到 a

转载 作者:行者123 更新时间:2023-11-29 10:45:30 26 4
gpt4 key购买 nike

我使用 PHPMyAdmin(即 mySQL)来创建它。

我有 2 张 table ,相册和照片。当然,照片可以是相册的一部分,为此我使用照片到相册的外键。

但现在我希望能够将照片放入相册表中,以便我可以使用该照片作为我的相册的封面。我尝试添加外键,但这给了我外键约束。

以下表格可帮助理解我的意思(foto = 照片)。红线表示我想要实现的目标。

enter image description here

我不太擅长 SQL,所以非常感谢您的帮助。

SQL相册:

CREATE TABLE `Albums` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Album_Naam` varchar(255) NOT NULL,
`Aanmaakdatum` datetime NOT NULL,
`FotoID` int(11) DEFAULT '1',
PRIMARY KEY (`ID`),
KEY `FotoID` (`FotoID`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1

SQL 照片

CREATE TABLE `Foto` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Foto_Naam` varchar(255) NOT NULL,
`AlbumID` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `AlbumID` (`AlbumID`),
CONSTRAINT `Foto_ibfk_1` FOREIGN KEY (`AlbumID`) REFERENCES `Albums` (`ID`)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1

最佳答案

通过使引用字段可为空,可以使外键成为可选的;字段中的 NULL 值不会违反对其强制执行的外键约束。这可以用来表示纯粹的可选关系,或者像本问题一样,推迟设置半循环依赖关系的值。

请注意,要从相册中删除封面照片,相册首先需要将该照片的封面引用设置为另一张照片,或设置为 null。同样,要删除相册,您需要删除它的 Foto,因此首先将其封面设置为 null。

关于mysql - SQL 将 a 引用到 b,将 b 引用到 a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44662986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com