博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SQL 编程你也行】SQL Server 2014新功能之序列Sequence
阅读量:5153 次
发布时间:2019-06-13

本文共 2825 字,大约阅读时间需要 9 分钟。

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

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

下面是一个例子:

1、创建表、创建序列

drop sequence dbo.sequence_testcreate sequence dbo.sequence_testas intstart with 1increment by 1;if object_id('test') is not null   drop table test;create table test (id int primary key,name varchar(20),num int);

 

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、使用序列

declare @n intset @n = next value for dbo.sequence_test;insert into test(id,name,num)values(@n,'b',20);select  next value for dbo.sequence_test --6declare @n intset @n = next value for dbo.sequence_test;  --7insert into test(id,name,num)values(@n,'b',20);select * from test

3、在多个表使用序列

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 testselect * from test1

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

if object_id('sequence_tinyint') is not null   drop sequence sequence_tinyintgocreate sequence dbo.sequence_tinyintas tinyint	start with 1	increment by 1	minvalue 1	maxvalue 2	cyclego--发现值是一样的select next value for dbo.sequence_tinyint, --1       next value for dbo.sequence_tinyintselect next value for dbo.sequence_tinyint   --2select next value for dbo.sequence_tinyint   --1

5、生成序列号

select *,       next value for dbo.sequence_test over(order by id) as 连续的idfrom test--注意:再次运行,值又发生变化了select *,       next value for dbo.sequence_test over(order by id) as 连续的idfrom test

6、重置序列号

alter sequence dbo.sequence_testrestart with 1;--有从1开始select next value for dbo.sequence_test;

7、将表从标识更改为序列

if object_id('ggg') is not null   drop table ggg;create table ggg(id int identity(1,1) not null,name varchar(10)constraint pk_ggg_id primary key clustered (id));insert into ggg(name)values('a'),      ('b'),      ('c');      alter table gggadd id_new int nullupdate ggg set id_new = id;alter table gggdrop constraint pk_ggg_id;alter table gggdrop column idexec sp_rename 'dbo.ggg.id_new','id','column';alter table gggalter column id int not null;alter table gggadd constraint pk_ggg_id primary key clustered(id);alter table gggadd constraint df_ggg_id default( next value for dbo.sequence_test) for id;select next value for dbo.sequence_testinsert into ggg(name,id)values('d',default)select * from ggg

 

转载于:https://www.cnblogs.com/momogua/p/8304457.html

你可能感兴趣的文章
NYOJ--513--A+B Problem IV(大数)
查看>>
剑指offer--38.左旋转字符串
查看>>
爬虫 scrapy图片下载
查看>>
学习笔记-任意用户密码重置10钟常见姿势
查看>>
msf假冒令牌
查看>>
留着看
查看>>
Centos7 搭建sonarQube
查看>>
mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法
查看>>
JAVA中通过Hibernate-Validation进行参数验证
查看>>
使用lagg做链路聚合与故障转移
查看>>
VS JavaScript 提示设置
查看>>
在vue项目npm run build后,index.html中引入css和js 报MIME type问题
查看>>
python的数据结构
查看>>
HTML5已成为主流的移动互联网云计算编程格式
查看>>
(转)从客户端中检测到有潜在危险的 Request.Form 值
查看>>
How to fix updating ubuntu apt-get problem
查看>>
以软件开发生命周期的过程来说明不同测试的使用情况
查看>>
Log Structured Merge Trees(LSM) 原理
查看>>
mysql中的事务
查看>>
Linux内核配置Kconfig语法
查看>>