在SQL Server中,我使用的是表变量,完成操作后,我想将其值插入具有标识列(也为PK)的真实表中。
我正在创建的表变量有两列;物理表有四个,第一个是标识列,一个整数IK。我要插入的列的数据类型与目标列的数据类型相同。
INSERT INTO [dbo].[Message] ([Name], [Type])
SELECT DISTINCT [Code],[MessageType]
FROM @TempTableVariable
此操作失败:
Cannot insert duplicate key row in object 'dbo.Message' with unique index 'IX_Message_Id'. The duplicate key value is (ApplicationSelection).
但是,当尝试仅插入值(...)时,它可以正常工作。
我该如何正确处理?
最佳答案
看来数据“ApplicationSelection”已经在数据库中。您需要编写选择以排除数据库中已经存在的记录。您可以使用where不存在子句或左连接来实现。查找索引,以查看除身份外还具有唯一性的字段。这将告诉您需要检查什么字段以查看当前是否存在该记录。
关于sql - 无法将SELECT INSERT INTO SELECT插入带有标识列的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11296383/