【发布时间】:2015-08-25 03:27:11
【问题描述】:
SQL Server 2008 中有 2 个数据库 DB_Main 和 DB_Backup。
我想将Table1的数据从DB_Backup复制到DB_Main的Table1。
两个数据库中所有表的结构都是一样的。两个数据库中的两个表都有外键、主键约束。
当我尝试使用此查询将Table1 的数据从DB_Backup 复制到DB_Main 的Table1 中时:
Insert into [DB_Main].[Table1]
Select *
from [DB_Backup].[Table1];
我收到这个外键错误。
INSERT 语句与 FOREIGN KEY 约束冲突 “FK_Table1_Table3”。数据库“DB_Main”中发生冲突, 表“Table3”,列“RequestID”。
请告诉我有什么简单的方法可以将Table1的所有记录从DB_Backup复制到DB_Main的Table1而不违反任何约束?
请回复
【问题讨论】:
-
Please tag the database type (SQL Server?) 这个错误意味着您还需要将数据加载到
Table3。Table1的列中有一条数据需要首先存在于Table3中。查看外键并找出需要数据的列。 -
@Nick.McDermaid:谢谢您的回复。
Table3里面已经有数据了。只是由于某种原因Table1从 DB_Main 数据库中删除了所有数据,所以我从 DB_Backup 数据库中插入备份数据。请让我知道我应该在查询中更改什么? -
你检查约束了吗?你读过外键约束吗?我建议您在不了解外键约束的情况下不要进行数据修补练习。无论如何,我无法告诉您要更改什么,因为您尚未发布约束定义。我们需要知道约束附加到
Table1中的哪一列。 -
@Nick.McDermaid:我请求您再次查看我发布的问题中的错误。我提到了列名
RequestID这个列是Table1中的外键和Table3的主键。请注意,我是数据库的新手。请让我知道您需要与该错误相关的其他信息,我会让您知道。请回复 -
这意味着,例如,您试图将一条记录插入到
Table1中,其中RequestID= 75。外键约束意味着 必须RequestID= 75 inTable3.... 的记录,目前没有。所以这意味着您还需要将数据加载到Table3。这有意义吗?
标签: sql-server