use*_*130 4 mysql sql foreign-keys
是否有某种神奇的SQL语句删除行及其所有依赖项(由外键约束链接)而不更改表以ON DELETE CASCADE手动添加或删除每个相关行?
我正在幻想这样的东西,DELETE FROM `table_a` WHERE `id` = 1 ON DELETE CASCADE;但我似乎无法在doc @ http://dev.mysql.com/doc/refman/5.5/en/delete.html找到任何有效的东西.
ALTER表只更改一次操作的约束,然后使用另一个操作将其还原ALTERDELETE FROM `table_b` WHERE `a_id` = 1;包含FK的每个表执行类似的操作table_a使用MySQL 5.5和InnoDB
ype*_*eᵀᴹ 10
不,简单的答案是,不,没有捷径.
您可以写下DELETE语句来删除相关表中的所有相关行,或者您已经定义了外键约束ON DELETE CASCADE.
请注意 - 只要外键关系中没有循环路径 - 就可以使用DELETE从多个表中删除的单个语句:
DELETE a, b, c, d
FROM a
LEFT JOIN b ON b.a_id = a.a_id
LEFT JOIN c ON c.a_id = a.a_id
LEFT JOIN d ON d.b_id = b.b_id
WHERE
a.a_id = 1 ;
Run Code Online (Sandbox Code Playgroud)