2016-02-22 128 views
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`)) 

我想我已經刪除鍵,然後更新字段,並再次創造了它? 我該怎麼做? 謝謝

+0

如果你想讓'spieler'條目與任何'mannschaft'條目沒有關聯,可以使'mannschaft'字段爲空,並用'SET mannschaft = NULL'更新'spieler'條目。錯誤消息只是告訴你'mannschaft'表中沒有條目ID爲'0' –

+0

@BenjaminPaap感謝您的快速回復。非常簡單的解決方案,我甚至沒有想過這個。我會盡快嘗試。 –

+0

@BenjaminPaap終於有時間來測試它,它的作用就像一個魅力,謝謝! –

回答

0

來自@BenjaminPaap的評論爲我解決了這個問題。