-1
私は奇妙な問題に直面しています。複雑なので、しばらく私と一緒に耐える。MySQL 5.6.24:外部キーがエラー1452(23000)エラーを返します
UPDATE org_tbl SET OrgID = 1 WHERE OrgID = 3;
:私はorg_tblにORGIDの値を更新しようとすると、その後
mysql> SELECT * FROM org_tbl;
OrgID Title
2 b
3 a
mysql> SELECT * FROM grp_tbl;
GroupID FkOrgID Title
1 3 pg_a
2 3 pg_b
mysql> SELECT * FROM parent_child_grp;
ChildGroupID GroupID FkOrgID Title
1 1 3 cg_a
2 1 3 cg_b
:以下は、データセットの場合は今
CREATE TABLE `org_tbl` (
`OrgID` int(11) NOT NULL,
`Title` varchar(128) DEFAULT NULL,
PRIMARY KEY (`OrgID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `grp_tbl` (
`GroupID` int(11) NOT NULL,
`FkOrgID` int(11) NOT NULL,
`Title` varchar(128) DEFAULT NULL,
PRIMARY KEY (`GroupID`,`FkOrgID`),
KEY `fk_grp_tbl_FkOrgID_org_tbl_OrgID` (`FkOrgID`),
CONSTRAINT `fk_grp_tbl_FkOrgID_org_tbl_OrgID` FOREIGN KEY (`FkOrgID`) REFERENCES `org_tbl` (`OrgID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `parent_child_grp` (
`ChildGroupID` int(11) NOT NULL,
`GroupID` int(11) NOT NULL,
`FkOrgID` int(11) NOT NULL,
`Title` varchar(128) DEFAULT NULL,
PRIMARY KEY (`ChildGroupID`,`GroupID`),
KEY `fk_cg_ChildGroupID_FkOrgID_pg_GroupID_FkOrgID` (`ChildGroupID`,`FkOrgID`),
KEY `fk_cg_GroupID_FkOrgID_pg_GroupID_FkOrgID` (`GroupID`,`FkOrgID`),
CONSTRAINT `fk_cg_ChildGroupID_FkOrgID_pg_GroupID_FkOrgID` FOREIGN KEY (`ChildGroupID`, `FkOrgID`) REFERENCES `grp_tbl` (`GroupID`, `FkOrgID`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_cg_GroupID_FkOrgID_pg_GroupID_FkOrgID` FOREIGN KEY (`GroupID`, `FkOrgID`) REFERENCES `grp_tbl` (`GroupID`, `FkOrgID`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
:
は、私は、次のスキーマを持つ3つのテーブルを持っています
エラーが発生する:
上記スキーマで起こるそれではERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`parent_child_grp`, CONSTRAINT `fk_cg_GroupID_FkOrgID_pg_GroupID_FkOrgID` FOREIGN KEY (`GroupID`, `FkOrgID`) REFERENCES `grp_tbl` (`GroupID`, `FkOrgID`) ON DELETE CASCADE ON UPD)
が
- parent_child_grpある(ChildGroupID、FkOrgID)=> grp_tbl(グループID、FkOrgID)
- parent_child_grp(グループID、FkOrgID)=> grp_tbl(グループID、FkOrgID)
第2の外部キー制約[ie parent_child_grp(GroupID、FkOrgID)=> grp_tbl(GroupID、FkOrgID)]、すべて正常に動作します。
** NOTE:
ON DELETE CASCADE ON UPDATE CASCADE
は今、私はこれが起こっている理由を理解することはできませんよ:すべてのテーブルがで外部キーを持っています。
助けてください。
このエラーを得ている。しかし、私は、「UPDATE CASCADE ON DELETE CASCADE ON」持っている理由だから、それらのテーブルに値を変更するの世話をする必要があります
–