而不是使用动态序列SQL Server触发器

时间:2015-12-30 10:48:29

标签: sql-server sql-server-2012

我想使用序列动态生成sequence_id

我有序列seq_C1seq_C2seq_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。

1 个答案:

答案 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'

并希望添加新序列是一件罕见的事情。