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



我想使用序列动态地自动生成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
.....
.....

源表中的样本数据:

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'

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

最新更新