sql - 无法将SELECT INSERT INTO SELECT插入带有标识列的表

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

在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/

相关文章:

sql-server - 如何在 T-SQL 中聚合字符串数据

sql - 如何通过 id 以外的任何其他方式获取记录 - SugarCRM

mysql - 将 IF 放入选择查询中

MySQL 查询 - 赚取超过平均工资

java - 数据库时间戳不匹配

sql - 使用来自其他表的动态值循环更新 SQL 表

mysql - 选择前 3 个最多计数组 - SQL

SQL Server - 从一个表中选择多行数据并使用第一个选定的数据更新另一个表上的多行数据

sql - 使用参数更新存储过程来自不同表的列名

sql - INNER JOIN 和 LEFT/RIGHT OUTER JOIN 的问题