MySQL如何在没有外键的情况下级联删除
好的,首先让我介绍一下我的模式 表:用户MySQL如何在没有外键的情况下级联删除,mysql,mysql-workbench,Mysql,Mysql Workbench,好的,首先让我介绍一下我的模式 表:用户 Field | Type | Key | NN | AI --------------------------------------------- id | int(11) | PRIM | YES | YES username | varchar(50) | | YES | NO banned | int(1) | | YES | NO For
Field | Type | Key | NN | AI
---------------------------------------------
id | int(11) | PRIM | YES | YES
username | varchar(50) | | YES | NO
banned | int(1) | | YES | NO
Foreign keys: none
表:Mac
Field | Type | Key | NN | AI
---------------------------------------------
id | int(11) | PRIM | YES | YES
address | varchar(50) | | YES | NO
lastacc | timestamp | | YES | NO
Foreign keys: none
表:usermac
Field | Type | Key | NN | AI
---------------------------------------------
userId | int(11) | PRIM | YES | NO
macId | int(11) | | YES | NO
Foreign keys:
[FK: macId] references macId to id in table macs
[FK: userId] references userId to id in table users
场景是,我有一个userId,并且希望删除mac中链接到该userId的所有记录,如usermac中的记录所述
用户与mac的关系:一个用户可以有多个mac,一个mac可以属于多个用户
我应该为此执行什么SQL查询?我尝试了级联删除,但级联不起作用
提前感谢您的回答。越简单越好:
DELETE FROM usermac WHERE userId=1;
将删除用户1的所有Mac
DELETE FROM mac WHERE id in (SELECT macId from usermac WHERE userId = <userId of deleted User>);
希望这有帮助。我已经尝试过了,usermac中的记录被删除了,但是mac中链接的记录保留了下来。是的,正如您所说,它们可能属于其他用户,但我需要删除它们。然后使用其他答案。Nut我认为最好从usermac中删除所有需要的内容,然后只从mac中删除这些记录,它们在usermac中没有相应的记录,也就是说,它们是孤儿谢谢。这是一个,当我在Mysql工作台上执行这个时,它说了一些关于安全模式的内容,防止了它,但我关闭了它,它工作了。如果我用Java中的JDBC执行这个查询,这个安全模式错误会发生吗?或者这个错误是特定于Mysql工作台的吗?你能告诉我你是如何关闭安全模式的吗?好的,因为它已经从Mysql关闭了。JDBC不应该有任何问题。