【发布时间】:2016-02-17 20:47:52
【问题描述】:
表 1 包含工作订单,表 2 包含安装人员。我想在 Table2 中为 Table1 中的工单 3906 插入一条记录。表的索引使得 Table1GUID = Table2GUID。目前 Table1GUID 对于 3906 为 NULL,因为 Table2 中没有相应的记录,所以我猜我需要为 Table1GUID 生成 NEWID(),然后在 Table2 中插入新记录,以便两个表中的记录具有相同的 GUID?
下面是抛出错误消息 547 UPDATE 语句与 FOREIGN KEY 约束冲突。如何在 Table1 中创建 NEWID 并插入到 Table2 中?
UPDATE Document SET Table1GUID = NEWID() WHERE WONumber = '3906'
以下 2 个中哪一个最适合在 Table2 中创建记录?
INSERT INTO Table2 (Table2GUID)
SELECT Table1GUID FROM Table1
WHERE Table1.WOnumber = '3906'
或
INSERT INTO Table2 (Table2GUID)
SELECT Table1GUID FROM Table1
INNER JOIN Table2 ON Table2GUID = Table1GUID
WHERE Table1.WOnumber = '3906'
【问题讨论】:
-
我们不知道你的外键结构,所以很难确定。但是您发布的第二个根本没有任何意义。您正在插入 Table2 ,因此加入它不起作用,因为您尚未创建该行。不清楚您要做什么,您也可以查看 OUTPUT 子句。我怀疑这可能是你想要的。
-
记录存在于表 1(工单 3096)中,但尚未分配安装程序(表 2)。我需要在 Table2 中创建一条新记录,该记录链接(即相同的 GUID)以记录在 Table1 中的工单 3906
-
如果在插入 Table1 时需要这样做,我建议使用 OUTPUT。如果需要稍后完成,则可以使用查询从 Table1 获取 guid 的值(您的第一个示例)。这有帮助吗?
-
我的问题是如何在 Table2 中创建一条新记录,该记录链接到 Table1 中 Table1GUID 为 NULL 的现有记录
标签: sql-server database sql-server-2008