我想编写一个触发器,将表中所有插入行的某些列传输到另一个表,同时递增目标表中序列号字段中的最大数字。此字段不是自动增量,而是主键字段。
我以前做的是在目标表中找到最大序列号,递增然后插入新值。如果一次插入数据,这可以正常工作。但是,当从单个查询中插入许多行时,如何递增序列号?示例问题如下:
insert into [mssql].mssql.dbo.destination_table (name,seq_no)
select name,?
from inserted
甚至可以一次插入几千行。
seq_no是复合主键的一部分。因此,例如,如果以不同的名称插入数据,则seq_no将是不同的。 (当我可以增加seq_no而不考虑它在主键中的部分时,应该考虑这个要求)
答案 0 :(得分:0)
好的,我遇到了你的问题,试试这个
insert into [mssql].mssql.dbo.destination_table (name,seq_no)
select name, x.MaxSeq + row_number() over (order by name)
from inserted, (select Max(seq_no) As MaxSeq From source_table) x