Bru*_*oLM 11 sql-server sequence
我有以下
CREATE TABLE [MyTable]
(
[ID] [bigint] PRIMARY KEY NOT NULL,
[Title] [nvarchar](64) NOT NULL
)
CREATE SEQUENCE MyTableID
START WITH 1
INCREMENT BY 1
NO CACHE
;
GO
Run Code Online (Sandbox Code Playgroud)
我想在 MyTable 上插入新记录并将 ID 设置为序列的下一个值。我该怎么做?也许是触发器,还是有其他方法?如何?
当我使用 SQL Server 2012 时,我不想使用 Identity 因为 gap bug。
bil*_*nkc 16
将其指定为列的默认属性
CREATE TABLE [MyTable]
(
[ID] [bigint] PRIMARY KEY NOT NULL DEFAULT (NEXT VALUE FOR dbo.MyTableID),
[Title] [nvarchar](64) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
未来的读者,如果服务意外停止,序列可能会出现间隙,CACHE 中实体的值可能会丢失。在这里,他们指定no cache
通过权衡序列对象的较慢性能来缓解这种情况。
创建序列参考