1
我必须更新一个外键,但我不知道它是如何完成的。 以下是我的表:更新外键
CREATE TABLE `mydb`.`mannschaft` (
`mannschaftID` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(50) NOT NULL ,
`stufe` INT NOT NULL,
`trainer` INT NOT NULL,
PRIMARY KEY (`mannschaftID`),
FOREIGN KEY (`trainer`) REFERENCES `trainer`(`trainerID`),
FOREIGN KEY (`stufe`) REFERENCES `stufe`(`stufeID`)
) ENGINE = InnoDB CHARACTER SET latin1 COLLATE latin1_german1_ci;
CREATE TABLE `mydb`.`spieler` (
`spielerID` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(50) NOT NULL ,
`vorname` VARCHAR(50) NOT NULL ,
`jahrgang` VARCHAR(10) NOT NULL ,
`bemerkung` VARCHAR(300) NOT NULL,
`mannschaft` INT NOT NULL,
PRIMARY KEY (`spielerID`),
FOREIGN KEY (`mannschaft`) REFERENCES `mannschaft` (`mannschaftID`)
) ENGINE = InnoDB CHARACTER SET latin1 COLLATE latin1_german1_ci;
,如果我这样做:
SHOW CREATE table course;
我得到如下:
CREATE TABLE `spieler` (
`spielerID` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE latin1_german1_ci NOT NULL,
`vorname` varchar(50) COLLATE latin1_german1_ci NOT NULL,
`jahrgang` varchar(10) COLLATE latin1_german1_ci NOT NULL,
`bemerkung` varchar(300) COLLATE latin1_german1_ci NOT NULL,
`mannschaft` int(11) NOT NULL,
PRIMARY KEY (`spielerID`),
KEY `mannschaft` (`mannschaft`),
CONSTRAINT `spieler_ibfk_1` FOREIGN KEY (`mannschaft`) REFERENCES `mannschaft` (`mannschaftID`),
CONSTRAINT `spieler_ibfk_2` FOREIGN KEY (`mannschaft`) REFERENCES `mannschaft` (`mannschaftID`),
CONSTRAINT `spieler_ibfk_3` FOREIGN KEY (`mannschaft`) REFERENCES `mannschaft` (`mannschaftID`),
CONSTRAINT `spieler_ibfk_4` FOREIGN KEY (`mannschaft`) REFERENCES `mannschaft` (`mannschaftID`),
CONSTRAINT `spieler_ibfk_5` FOREIGN KEY (`mannschaft`) REFERENCES `mannschaft` (`mannschaftID`),
CONSTRAINT `spieler_ibfk_6` FOREIGN KEY (`mannschaft`) REFERENCES `mannschaft` (`mannschaftID`),
CONSTRAINT `spieler_ibfk_7` FOREIGN KEY (`mannschaft`) REFERENCES `mannschaft` (`mannschaftID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci
我喜欢做这样的SQL:
$sql = "UPDATE `spieler` SET `mannschaft` = '0' WHERE `spielerID` = '".$id."'";
但我得到这个错误:
Error deleting record: Cannot add or update a child row: a foreign key constraint fails (`mydb`.`spieler`, CONSTRAINT `spieler_ibfk_1` FOREIGN KEY (`mannschaft`) REFERENCES `mannschaft` (`mannschaftID`))
我想我已经删除键,然后更新字段,并再次创造了它? 我该怎么做? 谢谢
如果你想让'spieler'条目与任何'mannschaft'条目没有关联,可以使'mannschaft'字段为空,并用'SET mannschaft = NULL'更新'spieler'条目。错误消息只是告诉你'mannschaft'表中没有条目ID为'0' –
@BenjaminPaap感谢您的快速回复。非常简单的解决方案,我甚至没有想过这个。我会尽快尝试。 –
@BenjaminPaap终于有时间来测试它,它的作用就像一个魅力,谢谢! –