跟踪游标中的自动增量列

时间:2013-11-06 22:06:07

标签: sql sql-server

我写了一个游标,我需要复制一些行并将其插入一个只有1列不同的表中。比方说,我有一个像这样的表A

Id     |    CID   |  Country  

 1           X           A    
 2           X           B     
 3           X           C    
此表中的

'Id'是自动增量和主键,Country是该CID访问的国家/地区。因此,当我被要求更新CID'X'访问过的每个国家/地区时,CID'X'也访问过该表。我写了一个光标并插入了CID'Y'和Country。在我执行光标后,表A变为:

Id     |    CID   |  Country  

 1           X           A    
 2           X           B     
 3           X           C    
 4           Y           A    
 5           Y           B     
 6           Y           C    

现在还有另一个表B,如下所示,其中AId是引用A中的Id的外键。

AId    |  AgeOfKids

 1          20
 1          23
 1          28
 2          21
 2          24
 2          29
 3          22
 3          25

我希望能够在此表中添加行,使其成为:

AId    |  AgeOfKids

 1          20
 1          23
 1          28
 2          21
 2          24
 2          29
 3          22
 3          25
 4          20
 4          23
 4          28
 5          21
 5          24
 5          29
 6          22
 6          25

用语言解释,表A中具有相同国家/地区的AI必须在表B中具有相同的BeIds。是否可以实现此目的?是这样,我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

使用OUTPUT clause

declare @t table (Id int not null,Country char(1) not null)

insert into TableA (CID,Country)
output inserted.id,inserted.Country into @t
select 'Y',Country from TableA where CID = 'X'

然后(应该是与上述相同批次的一部分):

insert into TableB (AId,AgeOfKids)
select t.ID,b.AgeOfKids
from @t t
 inner join
  TableA a
     on
        t.Country = a.Country and
        a.CID = 'X'
 inner join
  TableB b
     on
       a.ID = b.AId

填充表B.