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