我有一个序列:
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'
因为其他一些查询可能会改变它。或者我错了吗?
答案 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;