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.
Si applica a:SQL Server
Database SQL di
AzureIstanza gestita di SQL di
AzureDatabase SQL in Microsoft Fabric
Modifica gli argomenti di un oggetto sequenza esistente. Se la sequenza è stata creata con l'opzione CACHE , la modifica della sequenza ricrea la cache.
Gli oggetti sequenza vengono creati tramite l'istruzione CREATE SEQUENCE. Le sequenze sono valori interi e possono essere di qualsiasi tipo di dati in grado di restituire un intero. Il tipo di dati non può essere modificato usando l'istruzione ALTER SEQUENCE . Per modificare il tipo di dati, eliminare e ricreare l'oggetto sequenza.
Una sequenza è un oggetto associato a schema definito dall'utente che genera una sequenza di valori numerici in base a una specifica. I nuovi valori vengono generati da una sequenza chiamando la NEXT VALUE FOR funzione . Usare sp_sequence_get_range per ottenere più numeri di sequenza contemporaneamente. Per informazioni e scenari che usano sia CREATE SEQUENCE, sp_sequence_get_rangeche la NEXT VALUE FOR funzione , vedere Numeri di sequenza.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
ALTER SEQUENCE [ schema_name. ] sequence_name
[ RESTART [ WITH <constant> ] ]
[ INCREMENT BY <constant> ]
[ { MINVALUE <constant> } | { NO MINVALUE } ]
[ { MAXVALUE <constant> } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[ ; ]
Argomenti
sequence_name
Specifica il nome univoco con il quale è nota la sequenza nel database. Il tipo è sysname.
RESTART [ CON <costante> ]
Valore successivo restituito dall'oggetto sequenza. Se specificato, il RESTART WITH valore deve essere un numero intero minore o uguale al valore massimo e maggiore o uguale al valore minimo dell'oggetto sequenza. Se il WITH valore viene omesso, la numerazione della sequenza viene riavviata in base alle opzioni originali CREATE SEQUENCE .
Costante INCREMENT BY <>
Valore utilizzato per incrementare (o decrementare se negativo) il valore di base dell'oggetto sequenza per ogni chiamata alla NEXT VALUE FOR funzione. Se l'incremento è un valore negativo, l'oggetto sequenza è decrescente; in caso contrario, è crescente. L'incremento non può essere 0.
[ costante< MINVALUE >| NO MINVALUE ]
Specifica i limiti per l'oggetto sequenza. Se NO MINVALUE viene specificato, viene utilizzato il valore minimo possibile del tipo di dati sequenza.
[ costante< MAXVALUE >| NO MAXVALUE ]
Specifica i limiti per l'oggetto sequenza. Se NO MAXVALUE viene specificato, viene utilizzato il valore massimo possibile del tipo di dati sequenza.
[ CICLO | NESSUNA BICCHIERA ]
Questa proprietà specifica se l'oggetto sequenza deve essere riavviato dal valore minimo (o massimo per gli oggetti sequenza decrescente) o generare un'eccezione quando viene superato il valore minimo o massimo.
Nota
Dopo aver eseguito il ciclo il valore successivo è il valore minimo o massimo, non quello START VALUE della sequenza.
[ CACHE [ <costante> ] | NO CACHE ]
Migliora le prestazioni delle applicazioni che utilizzano gli oggetti sequenza riducendo il numero di I/O necessari per rendere persistenti i valori generati nelle tabelle di sistema.
Per altre informazioni sul comportamento della cache, vedere CREATE SEQUENCE.
Osservazioni:
Per informazioni sulla modalità di creazione delle sequenze e sulla modalità di gestione della cache delle sequenze, vedere CREATE SEQUENCE.
L'oggetto MINVALUE per le sequenze ascendenti e per MAXVALUE le sequenze decrescente non può essere modificato in un valore che non consente il START WITH valore della sequenza. Per modificare l'oggetto MINVALUE di una sequenza crescente in un numero maggiore del START WITH valore o per modificare l'oggetto MAXVALUE di una sequenza decrescente in un numero inferiore al START WITH valore, includere l'argomento RESTART WITH per riavviare la sequenza in un punto desiderato che rientra nell'intervallo minimo e massimo.
Metadati UFX
Per informazioni sulle sequenze, eseguire una query su sys.sequences.
Autorizzazioni
È richiesta ALTER l'autorizzazione per la sequenza o ALTER l'autorizzazione per lo schema. Per concedere ALTER l'autorizzazione per la sequenza, usare ALTER ON OBJECT nel formato seguente:
GRANT ALTER
ON OBJECT::Test.TinySeq TO [AdventureWorks\Larry];
La proprietà di un oggetto sequenza può essere trasferita tramite l'istruzione ALTER AUTHORIZATION .
Controllo
Per controllare ALTER SEQUENCE, monitorare .SCHEMA_OBJECT_CHANGE_GROUP
Esempi
Per esempi di creazione di sequenze e uso della NEXT VALUE FOR funzione per generare numeri di sequenza, vedere Numeri di sequenza.
R. Modificare una sequenza
Nell'esempio seguente vengono creati uno schema denominato Test e una sequenza denominata TestSeq usando il tipo di dati int, con un intervallo di valori compreso tra 100 e 200. La sequenza inizia con 125 e aumenta di 25 ogni volta che viene generato un numero. Poiché la sequenza è configurata per il ciclo, quando il valore supera il valore massimo di 200, la sequenza viene riavviata con il valore minimo 100.
CREATE SCHEMA Test;
GO
CREATE SEQUENCE Test.TestSeq
AS INT
START WITH 125
INCREMENT BY 25
MINVALUE 100
MAXVALUE 200
CYCLE
CACHE 3;
GO
Nell'esempio seguente la sequenza TestSeq viene modificata in modo da avere un intervallo di valori compreso tra 50 e 200. La sequenza riavvia la serie di numerazione con 100 e aumenta di 50 ogni volta che viene generato un numero.
ALTER SEQUENCE Test.TestSeq
RESTART WITH 100
INCREMENT BY 50
MINVALUE 50
MAXVALUE 200
NO CYCLE
NO CACHE;
GO
Poiché la sequenza non è in ciclo, la NEXT VALUE FOR funzione genera un errore quando la sequenza supera 200.
B. Riavviare una sequenza
Nell'esempio seguente viene creata una sequenza denominata CountBy1. La sequenza utilizza i valori predefiniti.
CREATE SEQUENCE Test.CountBy1;
Per generare un valore di sequenza, il proprietario esegue l'istruzione seguente:
SELECT NEXT VALUE FOR Test.CountBy1;
Il valore restituito -9.223.372.036.854.775.808 è il valore più piccolo possibile per il tipo di dati bigint. Il proprietario si rende conto che voleva che la sequenza iniziasse con 1, ma non indicava la START WITH clausola al momento della creazione della sequenza. Per risolvere l'errore, il proprietario esegue l'istruzione seguente.
ALTER SEQUENCE Test.CountBy1
RESTART WITH 1;
Il proprietario riesegue quindi l'istruzione seguente per generare un numero di sequenza.
SELECT NEXT VALUE FOR Test.CountBy1;
Il numero è ora 1, come previsto.
La CountBy1 sequenza è stata creata usando il valore predefinito di NO CYCLE in modo che smetterà di funzionare dopo la generazione del numero 9.223.372.036.854.775.807. Le chiamate successive all'oggetto sequenza restituiscono l'errore 11728. Nell'istruzione seguente viene modificato l'oggetto sequenza in modo che venga ripreso il ciclo e viene impostata una cache di 20.
ALTER SEQUENCE Test.CountBy1
CYCLE
CACHE 20;
Quando l'oggetto sequenza raggiunge 9.223.372.036.854.775.807 il ciclo viene ripreso e il numero successivo dopo la ripresa del ciclo sarà il minimo del tipo di dati, ovvero -9.223.372.036.854.775.808.
Il proprietario ha capito che il tipo di dati bigint usa 8 byte ogni volta che viene usato. Il tipo di dati int che usa 4 byte è sufficiente. Non è tuttavia possibile modificare il tipo di dati di un oggetto sequenza. Per modificare un tipo di dati int, il proprietario deve eliminare l'oggetto sequenza e ricrearlo con il tipo di dati corretto.