我想使用序列动态生成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
.....
.....
source_table中的示例数据:
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 ... insert语句填充目标表。在单个存储过程调用期间,使用源表向目标插入大约100到1000行。
我创建了一个而不是触发器来执行此操作。
我在触发器中尝试了以下SQL,但是我收到了错误
无效的对象名称' seq _'。
代码:
insert into target_table
select
id, name, (NEXT VALUE FOR 'seq_' + NAME)
from INSERTED
过去两天,我正在努力奋斗。请提供任何实施此建议。我正在使用SQL Server 2012。
答案 0 :(得分:0)
我认为你能做的最好的事情就是这样:
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'
并希望添加新序列是一件罕见的事情。