我有以下
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
我想在 MyTable 上插入新记录并将 ID 设置为序列的下一个值。我该怎么做?也许是触发器,还是有其他方法?如何?
当我使用 SQL Server 2012 时,我不想使用 Identity 因为 gap bug。
将其分配为列的默认属性
未来的读者,如果服务意外停止,Sequence可能会有间隙,CACHE 中实体的值可能会丢失。在这里,他们指定
no cache
通过权衡序列对象的较慢性能来缓解这种情况。创建序列参考
要
SEQUENCE
在INSERT
语句中使用 a,你可以试试这个:NEXT VALUE FOR dbo.MyTableID
是从 a 获取下一个数字的语法SEQUENCE
。您可以对多个表使用一个序列,如下例所示:
输出:
sqlfiddle