Oracle很早就可以使用序列了: 点击打开链接
SQL Server 从 2012 起才可以使用序列: msdn
对比起大家熟悉的 identity 来, 它有这样一些好处:
1. 可以用于多个表;
2. 可以直接 select , 不必牵扯到 insert 。
相同点:可以定义起始值、步长。 但可以定义是否循环。
格式:
CREATE SEQUENCE [schema_name . ] sequence_name
[ AS [ built_in_integer_type | user-defined_integer_type ] ]
[ START WITH <constant> ]
[ INCREMENT BY <constant> ]
[ { MINVALUE [ <constant> ] } | { NO MINVALUE } ]
[ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[ ; ]
USE tempdb
GO
IF EXISTS (SELECT * FROM sys.sequences AS s WHERE s.name='seq_Test')
DROP sequence seq_Test
GO
CREATE SEQUENCE seq_Test START WITH 1 INCREMENT BY 1 ;
SELECT NEXT VALUE FOR seq_Test AS r
/*
r
1
*/