我的数据库中有2个表
...用户
ID Username Randomkey
1 Dionne 938493
2 Liam 902303
3 James 232039
4 Sarah 320923
利益......
ID User_ID Interest
1 3 Army
2 3 Boxing
3 3 Tennis
4 4 Make Up
在我的兴趣表中,'User_ID'等于我的users表中的'ID'。
我想编写一个查询,当触发时,从我的'users'表中删除该行,同时从兴趣表中删除与该用户相关的所有数据。
我不确定如何做到这一点,我对谷歌没有运气。
如果有人能给我一些建议或至少指出我在哪里可以找到这些信息,那将是一个很大的帮助。
在我脑海中,我认为这将是:
DELETE FROM users, interests WHERE ID = '$userID' AND User_ID = '$userID'
答案 0 :(得分:6)
DELETE users, interests
FROM users
LEFT JOIN interests ON users.ID = interests.User_ID
WHERE users.ID = <id>;
当然,如果interests
表是InnoDB&amp;对具有ON DELETE CASCADE
的用户有外键约束,这将在用户被删除时自动完成。
答案 1 :(得分:3)
如果您正在使用InnoDB,那么您可以为引用interests (User_ID)
且users.ID
的{{1}}定义外键约束。然后,您只需删除ON DELETE CASCADE
中的行以及users
中引用该用户的所有行将自动删除。
如果你没有使用InnoDB,那么Wrikken的解决方案就可以了。