【发布时间】:2020-11-11 14:32:26
【问题描述】:
我无法删除这些记录。如何绕过外键?
我的桌子:
用户表:
user_locations 表:
命令和错误:
【问题讨论】:
-
'如何绕过外键?' - 绕行?
-
您试图违反参照完整性,这就是系统禁止您这样做的原因。
标签: mysql sql foreign-keys sql-delete
我无法删除这些记录。如何绕过外键?
我的桌子:
用户表:
user_locations 表:
命令和错误:
【问题讨论】:
标签: mysql sql foreign-keys sql-delete
外键约束阻止您删除父记录,只要它被任何子记录引用。这对应于默认引用操作,即on delete restrict。
不过,还有其他可用选项。除非您有充分的理由不这样做,否则我建议您将引用更改为 on delete cascade:这样当父母离开时,子记录会自动删除。
这需要重新创建约束:
alter table user_locations drop foreign key user_locations_user_id_foreign;
alter table user_locations
add constraint user_locations_user_id_foreign
foreign key (user_id) references users (id) on delete cascade;
有了这个设置,你就可以运行你原来的delete 语句;子记录将与父记录同时被自动删除。
【讨论】: