我一直在尝试从在线阅读教程和其他东西中学习,但我不能指责它。
目前我有2个表(我在构建应用程序后会有更多的表)所以我想在扩展和编码之前解决这个问题。
我将我的表设置为使用InnoDB,并使用user_id
作为外键使每个表彼此相关。
如果我在主用户表上发出DELETE
查询,我怎样才能从其他表中链接到user_id
字段的所有记录也被删除?
我知道这很简单,但我想我只需要自己提问,这样我就能理解答案,而不是阅读答案......嘿
非常感谢你的帮助。
答案 0 :(得分:5)
由于它们是具有适当FK关系的InnoDB表,因此您只需在外键定义中使用ON DELETE CASCADE
即可。例如,在其中一个相关表格中:
FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE
但是,这需要更改现有架构以修改外键。
有关完整信息,请参阅the MySQL FOREIGN KEY
docs。
答案 1 :(得分:0)
您可以使用DELETE触发器或使用Michael建议的技术级联DELETE,或者您可以手动编写足够的DELETE语句(从层次结构底部删除实体,这样您就不会违反外键约束)后者显然不是维护方面的理想解决方案。
如果您想微调删除过程,您可能希望使用TRIGGER方法(例如,如果您不想销毁与外键相关的某些数据,或者您想将其移动到别处或关联它)到另一个ID)。
答案 2 :(得分:0)
这是mysql示例
ALTER TABLE table_with_foregin_key ADD FOREIGN KEY ( foreign_key_column )
REFERENCES table_name (
user_id
) ON DELETE CASCADE ON UPDATE CASCADE;