删除表的子行

时间:2012-04-20 18:17:55

标签: mysql database

如果我有这种结构:

表用户

id_user
1
2

表格列表

id_lists    name_list   users_id_user
    1           Work              1
    2           work              2

lists_has_users

users_id_user   lists_id_lists
    1                      2
    2                      1

我想要的是,在删除id_lists时,我还要删除list_has_users

中该列表成员的所有用户

例如,如果我删除id_lists 1,则还应删除lists_id_lists 1

目前我得到:Cannot delete or update a parent row

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

似乎您定义了FOREIGN KEY约束来强制执行参照完整性,并禁止您在子项存在时删除父行。修改外键以包含ON DELETE CASCADE以强制删除子行。

如果您不知道,请使用DESCRIBE lists_has_users获取FK的符号。

ALTER TABLE lists_has_users DROP FOREIGN KEY `key_symbol`;
ALTER TABLE lists_has_users ADD FOREIGN KEY (lists_id_lists) REFERENCES lists (id_lists) ON DELETE CASCADE

您可能还想添加ON UPDATE CASCADE,以便lists_has_users行在lists的ID发生变化时发生变化。

答案 1 :(得分:0)

lists删除之前,您必须从lists_has_users删除,因为您似乎已启用完整性检查。