【发布时间】:2019-09-16 02:37:56
【问题描述】:
我在Products 表中插入第一个产品。我的回答语句工作正常,但我违反了主键约束:
无法在对象中插入重复键。重复键值为 [...]。
记录插入正确,但它还在我插入的记录上方插入“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 行)
消息 2627,第 14 层,状态 1,第 3 行
违反主键约束“PK__Products__A25C5AA60C388384”。无法在对象“dbo.Products”中插入重复键。重复键值为(17881832980551)
【问题讨论】:
-
有触发器吗?
-
所以要澄清一下,在您运行上述语句之前,表中没有记录?运行语句后,表中有 2 条记录?您是否验证过该记录不存在,例如
select * from dbo.Products -
因为看起来它曾经为您工作过,然后因为您对 PK 进行了硬编码而失败。
-
附注:如果您要插入 numerical 值(如
Code或Price),您应该不输入这些值值到单引号 - 这是不必要的,并导致 T-SQL 必须进行隐式类型转换...... -
您解决了这个问题吗?否则请分享您的产品表的表结构。需要检查为什么要插入其他记录
标签: sql-server tsql