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フィールドは挿入ごとに1ずつインクリメントする必要があります。上記のコードを使用しましたが、cidが増加していないようであるため、エラーは主キーの値が重複しています。では、どうすればcidの値を増やすことができますか?テーブルプロパティの変更は許可されていないため、IDプロパティを使用できません。

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 に答える