【发布时间】:2018-06-26 13:08:06
【问题描述】:
大家好,我必须在服务器 sql 2014 上更新外键,但是当我运行下面的代码时出现以下错误,如何解决?
错误:
消息 3621,级别 0,状态 0。 该语句已终止。 消息 547,级别 16,状态 0。 UPDATE 语句与 FOREIGN KEY 约束“fk_restirizione_idrapportomobile”冲突。冲突发生在数据库“db”、表“dbo.RapportoMobile”、列“IdRapportoMobile”中。 (第 1 行)
SQL 代码:
UPDATE risorsarapportomobile
SET risorsarapportomobile.idrapportomobile = 1236
WHERE risorsarapportomobile.idrisorseumane IN (SELECT
risorseumane.idrisorseumane
FROM risorsarapportomobile
INNER JOIN risorseumane
ON
risorseumane.idrisorseumane =
risorsarapportomobile.idrisorseumane
WHERE risorsarapportomobile.idrapportomobile IS NULL
AND CONVERT(VARCHAR(10), '26-06-2018', 105) =
CONVERT(VARCHAR(10), risorseumane.data, 105)
AND risorseumane.idcantiere = 158)
表格:
【问题讨论】:
-
值 1236 必须已经在外键指向的任何表中。如果您提取外键定义,它将告诉您该表是什么。外键是数据库中非常基本的概念 - 你应该了解它们
-
FK 的存在是有原因的 - 不要放弃它!
-
您正在尝试更新引用表
RapportoMobile的表中的键。这意味着您的密钥不匹配。如果您在RapportoMobile上有一个 ON UPDATE CASCADE 约束,那么更新主表将修复它。但必须先在这里完成 -
我们需要您的 FK 代码。你能找到这个 FK(在 SSMS 对象资源管理器上,展开(+ 图标)risorsarapportomobile,展开 Keyes,右键单击“fk_restirizione_idrapportomobile”,修改)并发布它的代码吗?
标签: sql sql-server