mysql - 删除表的子行

标签 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 也应该被删除。

此刻我得到:无法删除或更新父行

如何解决这个问题?

最佳答案

似乎您定义了一个 FOREIGN KEY 约束,该约束强制执行引用完整性,并禁止您在存在子行时删除父行。修改您的外键以包含 ON DELETE CASCADE 以强制删除子行。

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

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 的 id 发生变化时 lists_has_users 行也会发生变化。

关于mysql - 删除表的子行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10251398/

相关文章:

database - Laravel 5.2 DBLIB 驱动不支持

MySQL 计算别名计数列的平均值

php - 在 mysql 表中保存当前 ip 地址

executeQuery() 中的 Java MYSQL 异常

PHP Mysql 查询以 HTML 形式输出列表

mysql - 排序顺序 laravel Eloquent 关系

mysql - SQLite查询获取两个维度记录(学生与测验)

php - 大表中的 SQL 随机行(带 where 子句)

database - 通过JDBC合并来自不同数据库的表

mysql - 如何获取 GROUP BY 的最后一项