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不应该有任何问题。