我正在为我的老板创建一个开发数据库。我有创建所有表的SQL脚本,但现在我要导入大量数据。数据库中总共有5个表,它们的ID彼此相关:
注意:我不允许分享数据库/表名等信息
Table1
+-- Table2
+-- Table3
+-- Table4
+-- Table5
意味着Table 5
有一个指向Table 4
ID的字段,依此类推。
所以我正在做一堆这样的插入:
INSERT INTO [dbo].[Table2] (Table1_ID, AnotherField) VALUES (159268, 408659)
但它会为每个人抛出这个例外:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_TABLE2_TABLE1". The conflict occurred in database "--removed by author--", table "dbo.TABLE1", column 'TABLE1_ID'.
修改 所以问题是我需要先在Table1中插入数据。所以我的老板找到了一些足以满足Table1的数据......所以问题解决了:)
答案 0 :(得分:1)
没有太多要添加的内容 - 错误信息非常清楚。
您正尝试在表2中插入ID值,但Table1中不存在该ID值。因此错误信息。
在插入Table2
之前,需要将数据插入Table1编辑:
如果Table1没有数据,则很难想到数据库约束。您必须从表2中删除约束。
然后你必须向他们询问Table1的数据。
答案 1 :(得分:0)
Table1
导入所有记录,然后导入Table2
等。编辑:
好吧,如果您没有Table1
数据,那么您可以删除引用Table1
的所有外键约束(可能来自Table2
)。或者,您可以尝试生成“假”Table1
数据,同时考虑Table1
(aaarrgh)上可用的所有Table2
个ID。
答案 2 :(得分:0)
您可以暂时禁用外键约束,执行插入操作,然后使用CHECK
和NOCHECK
重新启用它。
WITH NOCHECK CONSTRAINT
禁用约束并允许通常违反约束的插入。
WITH CHECK CONSTRAINT
重新启用约束。
以下是detailed explanation如何执行此操作。