tenho o seguinte
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
Desejo inserir novos registros em MinhaTabela e definir o ID para o próximo valor da sequência. Como eu posso fazer isso? Um gatilho talvez, ou existe alguma outra maneira? Como?
Como estou usando o SQL Server 2012, não quero usar Identity por causa do bug de lacuna .
Atribua-o como a propriedade padrão para a coluna
Futuros leitores, uma Sequência pode ter um gap se o serviço parar inesperadamente, o valor das entidades no CACHE pode ser perdido. Aqui, eles estão especificando
no cache
para mitigar isso com a compensação de desempenho mais lento para o objeto de sequência.Referência de CRIAR SEQUÊNCIA
Para usar a
SEQUENCE
em umaINSERT
declaração, você pode tentar isto:NEXT VALUE FOR dbo.MyTableID
é a sintaxe para obter o próximo número de umSEQUENCE
.Você pode usar uma sequência para várias tabelas, conforme demonstrado pelo exemplo a seguir:
Resultado:
sqlfiddle