sqlserver序列操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

sqlserver序列操作

在SQL Server中提供了 identity关键字,在创建表的时候指定,可以让某列实现自动增长。

而在SQL Server 2014中新增了序列Sequence,通过这个序列,不仅可以实现单表的某列的增长,还可以实现多表中的某列的自动增长。

下面是一个例子:

1、创建表、创建序列

[sql] view plain copy

在CODE上查看代码片派生到我的代码片

drop sequence dbo.sequence_test

create sequence dbo.sequence_test

as int

start with 1

increment by 1;

if object_id('test') is not null

drop table test;

create table test

(

id int primary key,

name varchar(20),

num int

);

[sql] view plain copy

在CODE上查看代码片派生到我的代码片

insert into test(id,name,num)

values(next value for dbo.sequence_test,'a',10);

insert into test(id,name,num)

values(next value for dbo.sequence_test,'b',20), (next value for dbo.sequence_test,'c',30), (next value for dbo.sequence_test,'d',40);

select * from test

2、使用序列

[sql] view plain copy

在CODE上查看代码片派生到我的代码片

declare @n int

set @n = next value for dbo.sequence_test;

insert into test(id,name,num)

values(@n,'b',20);

select next value for dbo.sequence_test --6 declare @n int

set @n = next value for dbo.sequence_test; --7

insert into test(id,name,num)

values(@n,'b',20);

select * from test

3、在多个表使用序列

[sql] view plain copy

在CODE上查看代码片派生到我的代码片

if object_id('test1') is not null

drop table test1;

create table test1

(

id int primary key,

name varchar(20),

num int

);

insert into test1(id,name,num)

values(next value for dbo.sequence_test,'a',10);

insert into test1(id,name,num)

values(next value for dbo.sequence_test,'111111111111111111111111111111111',10); --由于超出了定义长度,所以报错,但序列值会继续递增到下一个

insert into test1(id,name,num)

values(next value for dbo.sequence_test,'a',10);

select * from test

select * from test1

4、在结果集中生成重复序列号

[sql] view plain copy

在CODE上查看代码片派生到我的代码片

if object_id('sequence_tinyint') is not null drop sequence sequence_tinyint

go

create sequence dbo.sequence_tinyint

as tinyint

st

art with 1

increment by 1

minvalue 1

maxvalue 2

cycle

go

--发现值是一样的

select next value for dbo.sequence_tinyint, --1 next value for dbo.sequence_tinyint

select next value for dbo.sequence_tinyint --2

select next value for dbo.sequence_tinyint --1

5、生成序列号

[sql] view plain copy

在CODE上查看代码片派生到我的代码片

select *,

next value for dbo.sequence_test over(order by id) as 连续的id

from test

--注意:再次运行,值又发生变化了

select *,

next value for dbo.sequence_test over(order by id) as 连续的id

from test

6、重置序列号

[sql] view plain copy

在CODE上查看代码片派生到我的代码片

alter sequence dbo.sequence_test

相关文档
最新文档