MySQL - 级联更新有效但级联删除无效
MySQL - Cascade update works but cascade delete doesn't
有两个table; proizvodi (parent) table, 和 normativ (child table), 关系 1:N.
parent table 上的主键是字段 Sifra,child table 上的主键是 SifraProizvoda。
当我在 parent table 中进行更新时,更改会反映在 child table 中,但是如果我尝试删除 parent table 中的内容,我得到错误:
/* SQL Error (1451): Cannot delete or update a parent row: a foreign key constraint fails (racuni
.cijenapro
, CONSTRAINT FK_cijenapro_proizvodi
FOREIGN KEY (SifraProizvoda
) REFERENCES proizvodi
(Sifra
) ON DELETE NO ACTION ON UPDATE CASCADE) */
这里是tables的结构link
我做错了什么?
除了ON UPDATE CASCADE
,你还应该有一个ON DELETE CASCADE
。你现在拥有的是 ON DELETE NO ACTION
所以外键关联阻止你删除父项,因为它不想要孤儿。如果您也有 ON DELETE CASCADE
,则父条目和子条目都将被删除。您可以使用 ALTER TABLE
将 ON DELETE CASCADE
添加到 table。您必须先删除现有约束,因为 ON UPDATE CASCADE
和 ON DELETE CASCADE
只允许一个约束
有两个table; proizvodi (parent) table, 和 normativ (child table), 关系 1:N.
parent table 上的主键是字段 Sifra,child table 上的主键是 SifraProizvoda。 当我在 parent table 中进行更新时,更改会反映在 child table 中,但是如果我尝试删除 parent table 中的内容,我得到错误:
/* SQL Error (1451): Cannot delete or update a parent row: a foreign key constraint fails (
racuni
.cijenapro
, CONSTRAINTFK_cijenapro_proizvodi
FOREIGN KEY (SifraProizvoda
) REFERENCESproizvodi
(Sifra
) ON DELETE NO ACTION ON UPDATE CASCADE) */
这里是tables的结构link
我做错了什么?
除了ON UPDATE CASCADE
,你还应该有一个ON DELETE CASCADE
。你现在拥有的是 ON DELETE NO ACTION
所以外键关联阻止你删除父项,因为它不想要孤儿。如果您也有 ON DELETE CASCADE
,则父条目和子条目都将被删除。您可以使用 ALTER TABLE
将 ON DELETE CASCADE
添加到 table。您必须先删除现有约束,因为 ON UPDATE CASCADE
和 ON DELETE CASCADE