Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
IDENTITY(1, 1) è supportato in una tabella ottimizzata per la memoria. Tuttavia, le colonne Identity con definizione identity(x, y) in cui x != 1 o y != 1 non sono supportate nelle tabelle ottimizzate per la memoria. La soluzione alternativa per i valori IDENTITY usa l'oggetto SEQUENCE (Numeri di sequenza).
Rimuovere prima di tutto la proprietà IDENTITY dalla tabella che si sta convertendo in In-Memory OLTP. Definire quindi un nuovo oggetto SEQUENCE per la colonna nella tabella. Gli oggetti SEQUENCE come colonne Identity si basano sulla possibilità di creare valori DEFAULT per le colonne che usano la sintassi NEXT VALUE FOR per ottenere un nuovo valore Identity. Poiché i DEFAULT non sono supportati in In-Memory OLTP, è necessario passare il valore SEQUENCE appena generato all'istruzione INSERT o a una stored procedure compilata in modo nativo che esegue l'inserimento. Nell'esempio seguente viene illustrato questo modello.
-- Create a new In-Memory OLTP table to simulate IDENTITY insert
-- Here the column C1 was the identity column in the original table
--
create table T1
(
[c1] integer not null primary key T1_c1 nonclustered,
[c2] varchar(32) not null,
[c3] datetime not null
) with (memory_optimized = on)
go
-- This is a sequence provider that will give us values for column [c1]
--
create sequence usq_SequenceForT1 as integer start with 2 increment by 1
go
-- insert a sample row using the sequence
-- note that a new value needs to be retrieved form
-- the sequence object for every insert
--
declare @c1 integer = next value for [dbo].[usq_SequenceForT1]
insert into T1 values (@c1, 'test', getdate())
Dopo aver eseguito l'inserimento più volte, nella colonna [c1] vengono visualizzati valori validi che aumentano in modo monotonico. Questo set di risultati viene generato usando l'analisi della tabella e l'indice hash senza ORDER BY in modo che le righe non vengano ordinate.