【问题标题】:Unable to update/delete/truncate table with foreign key无法使用外键更新/删除/截断表
【发布时间】:2016-10-25 09:35:12
【问题描述】:

我有两张桌子

CREATE TABLE table1 (
    id1 int(10) NOT NULL PRIMARY KEY,
    name varchar(20)
);    

CREATE TABLE table2 (
    newid int(10) NOT NULL PRIMARY KEY,
    f_id int(10)
);

现在,我添加了一个外键约束

ALTER TABLE table2 
ADD CONSTRAINT fk_id FOREIGN KEY (f_id) REFERENCES table1 (id)
ON DELETE CASCADE ON UPDATE CASCADE;

现在,问题是我无法更新/删除/截断表“table2”。这里的确切问题是什么以及如何解决?

【问题讨论】:

  • 用错误消息、可重现的场景或其他内容定义“无法”。

标签: mysql sql-server foreign-keys


【解决方案1】:

外键强制引用完整性,尝试从表 1 和表 2 中删除记录。您不能截断具有 FK 的表

【讨论】:

  • Table1 是 referenced 表,从中删除不需要 table2 中的记录引用 table1 中的 id 或删除选项正确。
  • 我可以更新 table2 中的记录吗?如果没有,我应该进行哪些更改才能更新 table2 的记录?
  • @Hari 根据您在问题中提供的信息,我们不知道。您已经发布了一些 DDL,其中充满了语法错误、一个场景并且没有错误消息/示例数据和查询来重现您的问题。是的,如果您不想将引用列更新为不存在的值,您应该能够更新记录。
  • 如果 t1 是被引用的,而 t2 是被引用的,那么你不能截断 t1,但可以从中删除。你可以截断 t2 没问题,你可以从中删除也没问题。
  • 至于更新t2没问题,除非更新违反了ref完整性。
猜你喜欢
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
相关资源
最近更新 更多