sql-server - INSERT 语句运行正确但抛出 'violation of PK contstraint' 错误?

标签 sql-server tsql

我正在 Products 表中插入第一个产品。我的回答陈述正确,但我违反了主键约束:

Cannot insert duplicate key in object. The duplicate key value is [...].

记录插入正确,但它还在我插入的记录上方插入了一条“0”记录。不确定发生了什么。

我看不出我的插入语句哪里错了,我是基于来自 sqlservertutorial.net 的插入语句。我不知道出了什么问题。

INSERT INTO products (code, P_Name, p_line, P_Collection, P_Colour,
                      P_Size, P_Price, active)
VALUES ('17881832980551', 'Austin Record', 'T-Shirt', 'Classic', 'Athletic Heather',
        'S', '39.50', 'Y');

我的 Products 表中的 Code 列是主键。

记录已按预期正确插入,但我也插入了额外的“0”记录,以及以下错误消息:

(2 rows affected)

Msg 2627, Level 14, State 1, Line 3
Violation of PRIMARY KEY constraint 'PK__Products__A25C5AA60C388384'. Cannot insert duplicate key in object 'dbo.Products'. The duplicate key value is (17881832980551)

最佳答案

试试这个

IF Not EXISTS(SELECT TOP 1 * FROM products WHERE code = '17881832980551')
BEGIN
     INSERT INTO products (code, P_Name, p_line, P_Collection, P_Colour,
                      P_Size, P_Price, active)
      VALUES ('17881832980551', 'Austin Record', 'T-Shirt', 'Classic', 'Athletic Heather',
        'S', '39.50', 'Y');
END
ELSE
BEGIN
     SELECT 'Record already added'
END

关于sql-server - INSERT 语句运行正确但抛出 'violation of PK contstraint' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57949774/

相关文章:

sql-server - 我可以恢复错误存储在 varchar 字段中的国际字符吗?

SQL 子查询返回超过 1 个结果

sql-server-2005 - 如何使用 T-SQL 将字符串转换为日期时间?

sql-server - 从列表形成三列表

基于 while 循环的 SQL 查询

SQL Server 存储过程默认值

sql-server - 如何判断 SQL 连接是否过多?

sql-server - 在SSIS中将多行合并为一

sql - 我如何在 sql server 2005 中将行转换为列

c# - 使用 TransactSQL 将字节数组转换为字符串