-1

在 SQL Server 中,我使用了一个表变量,完成操作后,我想将它的值插入到一个真实的表中,该表有一个标识列,该列也是 PK。

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

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

这失败了:

无法在具有唯一索引“IX_Message_Id”的对象“dbo.Message”中插入重复的键行。重复键值为 (ApplicationSelection)。

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

我怎样才能正确?

4

1 回答 1

0

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

于 2012-07-02T15:16:16.900 回答