sql server 2012 新知识-序列

今天聊一聊sql 2012 上的新功能-----序列

按我的理解,它就是为了实现全局性的唯一标识,按sql server 以前的版本,想对一张表标识很简单,比如identity,但如果要对某几张有业务关联关系的表,做一个统一的标识这时有没有好的办法来实现?

例如:

通过序列保证两张表ID的唯一性。

首先创建一个测试库

CREATE DATABASE MB_DB02
GO

USE MB_DB02
GO

--创建序列
CREATE SEQUENCE [dbo].[Sequence_01] AS [bigint]
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
NO CYCLE
NO CACHE

--start with 设置起始值
--increment by 设置增长间隔
--min和max分别设置最小和最大值
--cycle设置是否循环
--cache指定缓存的设置

--检查序列的创建情况
SELECT start_value,increment,current_value FROM sys.sequences

--创建测试表
CREATE TABLE DemoA
(
ID BIGINT NOT NULL primary key,
Class_type NVARCHAR ( 20 ),
price INT
)

CREATE TABLE DemoB
(
ID BIGINT NOT NULL primary key,
Class_type NVARCHAR ( 20 ),
price INT
)

--分别对表DemoA与DemoB插入记录
INSERT INTO DemoA VALUES ( NEXT VALUE FOR Sequence_01, '英语' ,1000)
INSERT INTO DemoB VALUES ( NEXT VALUE FOR Sequence_01, '汉语' ,800)
INSERT INTO DemoA VALUES ( NEXT VALUE FOR Sequence_01 ,'法语' ,1500 )
INSERT INTO DemoB VALUES ( NEXT VALUE FOR Sequence_01 ,'德语' ,2000)

 

---更改序列值

ALTER SEQUENCE Sequence_01
RESTART WITH 50
INCREMENT BY 30

--检查序列的创建情况
SELECT start_value,increment,current_value FROM sys.sequences

 

原文地址:https://www.cnblogs.com/fooa1098/p/7151997.html