如何创建包含使用序列的列的表?

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通过权衡序列对象的较慢性能来缓解这种情况。

创建序列参考