我使用PHPMyAdmin (所以mySQL)来创建它。
我有两张桌子,相册和照片。当然,照片可以是相册的一部分,为此,我在相册之间使用外键。
但现在我希望能够在相册表格中放入一张照片,这样我就可以用这张照片作为我相册的封面。我尝试添加一个外键,但这给了我一个外键约束。
下面的表格可以帮助理解我的意思(foto = photo)。红线表示我想要实现的目标。

我对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=latin1SQL照片
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发布于 2017-06-21 05:29:22
通过使引用字段可为空,可以使外键成为可选的;字段中的空值不违反对其施加的外键约束。这可以用来表示纯粹的可选关系,或者,就像这个问题一样,推迟设置半循环依赖关系中的值。
请注意,要从相册中删除封面照片,相册首先需要将其对该foto的封面引用设置为另一张照片,或设置为null。类似地,要删除专辑,您需要删除它的封面,因此首先将它的Foto设置为空。
https://stackoverflow.com/questions/44662986
复制相似问题