无法将INSERT INTO SELECT插入到具有标识列的表中

时间:2012-07-02 15:10:50

标签: sql sql-server tsql error-handling identity-column

在SQL服务器中,我使用表变量,当完成操作它时,我想将其值插入到具有标识列的实际表中,该列也是PK。

我制作的表格变量有两列;物理表有四个,第一个是标识列,一个整数IK。我要插入的列的数据类型与目标列的数据类型相同。数据类型。

 INSERT INTO [dbo].[Message] ([Name], [Type])
 SELECT DISTINCT [Code],[MessageType] 
 FROM @TempTableVariable    

这失败了:

  

无法在对象' dbo.Message'中插入重复的键行。具有独特的索引       ' IX_Message_Id&#39 ;.重复键值为(ApplicationSelection)。

但是当尝试仅插入值(...)时,它可以正常工作。

我如何做对吗?

1 个答案:

答案 0 :(得分:0)

似乎数据“ApplicationSelection”已经在数据库中。你需要编写select以排除数据库中已有的记录。你可以用where not exists子句或左连接来做到这一点。 LOOK up teh index以查看除了身份之外哪个字段是唯一的。这将告诉您需要检查哪些字段以查看当前是否存在记录。