【发布时间】:2015-12-21 09:50:07
【问题描述】:
我正在使用以下代码在我的 SP 中按表值参数插入日期。实际上,当我的 TVP 中存在一条记录时它可以工作,但当它有多个记录时,它会引发以下错误:
'违反主键约束'PK_ReceivedCash''。无法在对象“Banking.ReceivedCash”中插入重复键。声明已终止。
insert into banking.receivedcash(ReceivedCashID,Date,Time)
select (select isnull(Max(ReceivedCashID),0)+1 from Banking.ReceivedCash),t.Date,t.Time from @TVPCash as t
【问题讨论】:
-
Banking.ReceivedCash上有一个 PRIMARY 键,而您通过插入具有完全相同键的行来违反它。解决方案:不要插入具有相同键的行,或更改您的键,因为它不是正确的键。 -
@TT。实际上,我尝试通过此代码插入唯一值,如您所见(从 Banking.ReceivedCash 中选择 isnull(Max(ReceivedCashID),0)+1),但是当要插入多个记录时它不起作用!
-
将
ReceivedCashID改为IDENTITY 列。 -
@TT。要求只是没有自动增量的主键
标签: sql-server-2008-r2 primary-key table-valued-parameters