0
我有一個表不能添加或更新子行,外鍵約束失敗
1.
CREATE TABLE `Parent` (
`ID` bigint(19) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.
CREATE TABLE `Child_1` (
`ParentID` bigint(19) NOT NULL DEFAULT '0',
`ID` bigint(19) NOT NULL DEFAULT '0',
PRIMARY KEY (`ParentID`,`ID`),
KEY `Child_1_FK1_IDX` (`ParentID`,`ID`),
CONSTRAINT `Child_1_FK1` FOREIGN KEY (`ParentID`, `ID`) REFERENCES `Child_2` (`ParentID`, `ID`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.
CREATE TABLE `Child_2` (
`ParentID` bigint(19) NOT NULL DEFAULT '0',
`ID` bigint(19) NOT NULL DEFAULT '0',
PRIMARY KEY (`ParentID`,`ID`),
KEY `Child_2_FK1_IDX` (`ParentID`),
CONSTRAINT `Child_2_FK1` FOREIGN KEY (`ParentID`) REFERENCES `Parent` (`ParentID`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
不幸的是,我已經刪除了第二個表約束。
CONSTRAINT `Child_1_FK1` FOREIGN KEY (`ParentID`, `ID`) REFERENCES `Child_2` (`ParentID`, `ID`) ON DELETE CASCADE
我該如何恢復?
當我測試此查詢,我得到了「不能添加或更新子行,外鍵約束失敗」 – Suresh
這意味着,數據已插入到違反約束的表...請刪除這些記錄( s),然後運行這個將約束添加到表 – rags
你能解決這個問題嗎? – rags