Sql:SQL Server CREATE SEQUENCE statement

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
---自动增长跳至1001  https://stackoverflow.com/questions/17587094/identity-column-value-suddenly-jumps-to-1001-in-sql-server
--1. 使用序列 (Sequence) https://docs.microsoft.com/zh-cn/sql/t-sql/statements/create-sequence-transact-sql?view=sql-server-ver15
--2. 为SQL Server 注册启动参数 -t272
IF EXISTS(SELECT * FROM sys.sequences WHERE name = N'Id_Sequence')
    DROP SEQUENCE Id_Sequence;
GO
CREATE SEQUENCE Id_Sequence
    AS INT
    START WITH 1 --从1开始计数
    INCREMENT BY 1 -- 每次加几个
    MINVALUE 0  --最小值
    NO MAXVALUE --没有最大值
   CACHE 10  --设置缓存cache个序列
GO
/*
START WITH <constant>
序列对象返回的第一个值。 START 值必须小于或等于序列对象的最大值并大于或等于其最小值。 新序列对象的默认起始值是升序序列对象的最小值和降序序列对象的最大值。
INCREMENT BY <constant>
每次调用 NEXT VALUE FOR 函数时序列对象值递增(如果为负数,则为递减)的值。 如果增量是负值,则序列对象为降序,否则为升序。 增量不能为 0。 新序列对象的默认增量为 1。
[ MINVALUE <constant> | NO MINVALUE ]
指定序列对象的边界。 一个新序列对象的默认最小值是该序列对象的数据类型的最小值。 对于 tinyint 数据类型,此值为零,对于所有其他数据类型则为负数。
[ MAXVALUE <constant> | NO MAXVALUE
指定序列对象的边界。 一个新序列对象的默认最大值是该序列对象的数据类型的最大值。
[ CYCLE | NO CYCLE ]
此属性指定当超过序列对象的最小值或最大值时,序列对象是应从最小值(对于降序序列对象,则为最大值)重新开始,还是应引发异常。 新序列对象的默认循环选项是 NO CYCLE。
[ CACHE [<constant> ] | NO CACHE ]
通过最大限度地减少生成序列编号所需的磁盘 IO 数,可以提高使用序列对象的应用程序的性能。 默认值为 CACHE。
例如,如果选择的缓存大小为 50,SQL Server 并不会缓存 50 个单个值。 它只是缓存当前值和缓存中保留的值数。 这意味着,存储缓存所需的内存量始终为序列对象的数据类型的两个实例。
*/
DROP table DuInvoiceReceipts
go
 
 
CREATE TABLE DuInvoiceReceipts
(
    Duid   INT PRIMARY KEY
        DEFAULT (NEXT VALUE FOR Id_Sequence),
    orderId     INT NOT NULL,
    isLate      BIT NOT NULL,
    receiptDate Datetime NOT NULL,
    note NVARCHAR(100)
);
go
 
insert into DuInvoiceReceipts(orderId,isLate,receiptDate,note)
SELECT 2,1,getdate(),N'geovindu' union
SELECT 3,1,getdate(),N'涂聚文' union
SELECT 4,1,getdate(),N'geovin' union
SELECT 5,1,getdate(),N'du' union
SELECT 6,0,getdate(),N'涂年生' union
SELECT 7,1,getdate(),N'江西' union
SELECT 8,1,getdate(),N'塗聚文(Geovin Du)' union
SELECT 9,1,getdate(),N'井岗山'
go
 
select * from DuInvoiceReceipts
go
 
--
SELECT * FROM sys.sequences WHERE name = 'Id_Sequence'
go
--查询一下个值
SELECT NEXT VALUE FOR Id_Sequence
go

  

posted @   ®Geovin Du Dream Park™  阅读(280)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2016-08-05 C++: read access data using ADOX.DLL and System::Data::OleDb
2016-08-05 C++: DataGridView::DataSource
2016-08-05 Software license key and activation
2013-08-05 Css:Conditional comments 条件注释
2013-08-05 SQL Server迭代求和
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示