2
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 字段应在每次插入时加一。我已经使用了上面的代码,但 cid 似乎没有增加,所以错误是主键的重复值。那么如何增加 cid 的值呢?由于不允许更改表属性,因此我无法使用身份属性。

4

2 回答 2

1

试试这个:

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-10T09:31:40.657 回答
1

已使用临时表进行演示。这是在多个用户使用时避免错误的更好方法

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 updateCust3
于 2012-09-10T10:58:58.493 回答