我想使用序列动态地自动生成sequence_id
。
我有序列seq_C1
,seq_C2
,seq_C3
,。。。。像这样。下面提供了这些序列的下一个值。
seq_C1: next value would be 121
seq_C2: next value would be 76
seq_C3: next value would be 2981
.....
.....
源表中的样本数据:
ID Name
1 C1
2 C1
3 C2
4 C2
5 C3
...
...
我必须使用序列(动态)根据名称列自动递增sequence_id
列。
目标表应该像这样填充
ID Name sequence_id
1 C1 121
2 C1 122
3 C2 76
4 C2 77
5 C3 2981
...
...
使用select…填充目标表。。。使用存储过程插入语句。在单个存储过程调用期间,使用源表向目标插入大约100到1000行。
我创建了一个而不是触发器来执行此操作。
我在触发器中尝试了下面的SQL,但我得到了错误
对象名称"seq_"无效。
代码:
insert into target_table
select
id, name, (NEXT VALUE FOR 'seq_' + NAME)
from INSERTED
在过去的两天里,我一直在挣扎。请提供任何实施建议。我使用的是SQL Server 2012。
我认为你能做的最好的事情是这样的:
insert into target_table
select id,name, NEXT VALUE FOR seq_C1 from INSERTED where name='C1'
union all
select id,name, NEXT VALUE FOR seq_C2 from INSERTED where name='C2'
union all
select id,name, NEXT VALUE FOR seq_C3 from INSERTED where name='C3'
希望添加新的序列是一件罕见的事情。