0

这里我试图从表列中将一些数据迁移到目标列有唯一约束的全新表。基本上我试图:如何处理数据迁移脚本中的唯一约束违规?

INSERT INTO FooTable VALUES (SELECT BarTable.Code FROM BarTable) 

FooTable只有2列:ID和代码(具有唯一约束的列)。

但BarTable.Code,也许有一些重复的值,我需要对待和适应他们在新的约束(也许:Code = Code + 1或其他)。

关于如何做到这一点的任何想法?

我正在使用MS SQL Server 2008 R2。

预先感谢您。

回答

1

可以使用MERGE命令,插入一个不同的记录时的代码匹配。

这是基于您的方案为例:

MERGE FooTable AS T 
USING BarTable AS S 
ON (T.Code = S.Code) 
WHEN NOT MATCHED BY TARGET 
    THEN INSERT(Code) VALUES(S.Code) 
WHEN MATCHED 
    THEN INSERT(Code) VALUES(S.Code+1) 
0

您可以使用Not Exists

INSERT INTO FooTable VALUES (SELECT distinct br.Code FROM BarTable br where NOT EXISTS(SELECT * FROM FooTable bs where br.code=bs.code )) 
+0

感谢你回答@legendinmaking – 2013-04-27 20:39:13

相关问题