declare @cid int
set @cid=(select ISNULL(MAX(cid),0)+1 from CustInfo)
insert into CustInfo(CID,CTypeId,CustNo,Regdate,
DOB,CCertID,CCertNo,CompId,PostedBy,PostedOn)
(select @cid,1,0,'2012-9-10',
dob,ccertid,ccertno,0,null,null
from updateCust3)我使用上面的代码将表updateCust3中的值插入到表UpdateCustInfo中。在这种情况下,CID字段应该在每次插入时递增1。我使用了上面的代码,但是cid似乎没有增加,所以错误是主键的重复值。那么如何增加cid的值呢?由于不允许在表属性中进行更改,因此我不能使用标识属性。
发布于 2012-09-10 17:31:41
试试这个:
declare @cid int
set @cid=(select ISNULL(MAX(cid),0)+1 from CustInfo)
insert into CustInfo(CID,CTypeId,CustNo,Regdate,
DOB,CCertID,CCertNo,CompId,PostedBy,PostedOn)
select @cid+row_number() over (order by (select 0)),1,0,'2012-9-10',
dob,ccertid,ccertno,0,null,null
from updateCust3)编辑:正如评论中提到的MikaelEriksson,这是有风险的,如果您的用户同时尝试更新表,它将出错。
发布于 2012-09-10 18:58:58
已经使用临时表进行了演示。当多个用户使用时,这是避免错误的更好方法
DECLARE @Table TABLE
(
CTypeId INT identity (1,1)
,CustNo int
,DOB datetime
,Regdate datetime
,CCertID int
,CCertNo int
,CompId int
,PostedBy varchar(100)
,PostedOn datetime
)
INSERT @Table
select 1,0,'2012-9-10',
dob,ccertid,ccertno,0,null,null
from updateCust3https://stackoverflow.com/questions/12348740
复制相似问题