获取在SQL Server中插入时用作默认值的序列号

时间:2014-12-27 10:56:47

标签: sql-server sql-server-2014

我有一个序列:

create sequence mainseq as bigint start with 1 increment by 1

我用来填充表的主键:

create table mytable(
    id      bigint not null constraint DF_MYTABLE_ID default next value for mainseq,
    code    varchar(20) not null
)

如果我像这样插入表格:

insert into mytable(code) values('hello')

如何知道序列生成的ID?使用身份时,select scope_identity()之类的东西。

我认为从最后一个号码获取是安全的:

select current_value from sys.sequences where name = 'mainseq'

因为其他一些查询可能会改变它。或者我错了吗?

1 个答案:

答案 0 :(得分:3)

您可以使用OUTPUT clause

INSERT INTO mytable
            (code)
OUTPUT      INSERTED.id
VALUES     ('hello');

虽然在某些情况下,您可能会发现直接调用序列更方便

DECLARE @id BIGINT;

SELECT @id = next value for mainseq;

INSERT INTO mytable
            (id,
             code)
VALUES     (@id,
            'hello'); 

SELECT @id;