【问题标题】:Unable to delete records with the correct command无法使用正确的命令删除记录
【发布时间】:2020-11-11 14:32:26
【问题描述】:

我无法删除这些记录。如何绕过外键?

我的桌子:

用户表:

user_locations 表:

命令和错误:

【问题讨论】:

  • '如何绕过外键?' - 绕行?
  • 您试图违反参照完整性,这就是系统禁止您这样做的原因。

标签: mysql sql foreign-keys sql-delete


【解决方案1】:

外键约束阻止您删除父记录,只要它被任何子记录引用。这对应于默认引用操作,即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 语句;子记录将与父记录同时被自动删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多