Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
ALTER SEQUENCE
ALTER SEQUENCE— modificare la definizione di un generatore di sequenze.
Importante
Quando si usano sequenze, il valore della cache deve essere considerato attentamente. Per ulteriori informazioni, consultate il callout importante nella CREATE SEQUENCE pagina.
Per indicazioni su come utilizzare al meglio le sequenze basate sui modelli di carico di lavoro, consulta. Utilizzo di sequenze e colonne di identità
Sintassi supportata
ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ [ NO ] CYCLE ] [ START [ WITH ] start ] [ RESTART [ [ WITH ] restart ] ] [ CACHE cache ] [ OWNED BY { table_name.column_name | NONE } ] ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema where cache is 1 or cache >= 65536
Description
ALTER SEQUENCEmodifica i parametri di un generatore di sequenze esistente. Tutti i parametri non specificatamente impostati nel ALTER SEQUENCE comando mantengono le impostazioni precedenti.
È necessario possedere la sequenza da utilizzareALTER SEQUENCE. Per modificare lo schema di una sequenza, è necessario disporre anche dei CREATE privilegi sul nuovo schema. Per modificare il proprietario, dovete essere in grado di SET ROLE ricoprire il nuovo ruolo di proprietario e quel ruolo deve avere CREATE i privilegi sullo schema della sequenza. (Queste restrizioni impongono che la modifica del proprietario non comporti nulla che non si possa fare eliminando e ricreando la sequenza. Tuttavia, un superutente può comunque modificare la proprietà di qualsiasi sequenza.)
Parameters
name-
Il nome (facoltativamente qualificato dallo schema) di una sequenza da modificare.
IF EXISTS-
Non generare un errore se la sequenza non esiste. In questo caso viene emesso un avviso.
increment-
La clausola
INCREMENT BYè facoltativa. Un valore positivo creerà una sequenza crescente, uno negativo una sequenza decrescente. Se non specificato, verrà mantenuto il vecchio valore di incremento.increment minvalue/NO MINVALUE-
La clausola opzionale
MINVALUEdetermina il valore minimo che una sequenza può generare. SeminvalueNO MINVALUEviene specificato, verranno utilizzati i valori predefiniti di 1 e il valore minimo del tipo di dati per le sequenze ascendenti e discendenti, rispettivamente. Se non viene specificata nessuna opzione, verrà mantenuto il valore minimo corrente. maxvalue/NO MAXVALUE-
La clausola opzionale
MAXVALUEdetermina il valore massimo per la sequenza. SemaxvalueNO MAXVALUEviene specificato, verranno utilizzati i valori predefiniti del valore massimo del tipo di dati e -1 per le sequenze ascendenti e discendenti, rispettivamente. Se non viene specificata nessuna opzione, verrà mantenuto il valore massimo corrente. CYCLE-
La parola
CYCLEchiave opzionale può essere utilizzata per consentire alla sequenza di avvolgersi quando lamaxvalueominvalueè stata raggiunta rispettivamente da una sequenza crescente o decrescente. Se viene raggiunto il limite, il numero successivo generato sarà rispettivamente ilminvalueomaxvalue. NO CYCLE-
Se viene specificata la parola
NO CYCLEchiave opzionale, tutte le chiamate effettuatenextvaldopo che la sequenza ha raggiunto il valore massimo restituiranno un errore. Se nonNO CYCLEviene specificato nessunoCYCLEdei due, verrà mantenuto il comportamento del vecchio ciclo. start-
La clausola opzionale
START WITHmodifica il valore iniziale registrato della sequenza. Ciò non ha alcun effetto sul valore della sequenza corrente; imposta semplicemente il valore che verranno utilizzatistartALTER SEQUENCE RESTARTdai comandi futuri. restart-
La clausola opzionale
RESTART [ WITHmodifica il valore corrente della sequenza. È simile alla chiamata allarestart]setvalfunzione conis_called=false: il valore specificato verrà restituito dalla successiva chiamata dinextval. ScrivereRESTARTsenzarestartvalore equivale a fornire il valore iniziale registrato daCREATE SEQUENCEo impostato per l'ultima volta daALTER SEQUENCE START WITH.A differenza di una
setvalchiamata, un'RESTARToperazione su una sequenza è transazionale e impedisce alle transazioni simultanee di ottenere numeri dalla stessa sequenza. Se questa non è la modalità operativa desiderata,setvaldovrebbe essere utilizzata. cache-
La clausola
CACHEconsente di preallocare e archiviare i numeri di sequenza in memoria per un accesso più rapido. Il valore deve essere 1 o un valore diverso >= 65536. Se non specificato, il vecchio valore della cache verrà mantenuto. Per ulteriori informazioni sul comportamento della cache, consulta la guida CREATE SEQUENCE riportata di seguito.cache OWNED BY/table_name.column_nameOWNED BY NONE-
L'
OWNED BYopzione fa sì che la sequenza venga associata a una colonna specifica della tabella, in modo che se quella colonna (o l'intera tabella) viene eliminata, anche la sequenza verrà eliminata automaticamente. Se specificata, questa associazione sostituisce qualsiasi associazione precedentemente specificata per la sequenza. La tabella specificata deve avere lo stesso proprietario e appartenere allo stesso schema della sequenza. La specificazioneOWNED BY NONErimuove qualsiasi associazione esistente, rendendo la sequenza «indipendente». new_owner-
Il nome utente del nuovo proprietario della sequenza.
new_name-
Il nuovo nome per la sequenza.
new_schema-
Il nuovo schema per la sequenza.
Note
ALTER SEQUENCEnon influirà immediatamente sui nextval risultati nei backend, diversi da quello corrente, che hanno valori di sequenza preallocati (memorizzati nella cache). Utilizzeranno tutti i valori memorizzati nella cache prima di notare i parametri di generazione della sequenza modificati. Il backend corrente verrà modificato immediatamente.
ALTER SEQUENCEnon influisce sullo currval stato della sequenza.
ALTER SEQUENCEpuò causare altre transazioni verso OCC.
Per ragioni storiche, ALTER TABLE può essere utilizzato anche con le sequenze; ma le uniche varianti consentite con ALTER TABLE le sequenze sono equivalenti ai moduli mostrati sopra.
Esempi
Riavvia una sequenza chiamataserial, a 105:
ALTER SEQUENCE serial RESTART WITH 105;
Compatibilità
ALTER SEQUENCEè conforme allo standard SQL, ad eccezione delle SET SCHEMA clausoleAS,START WITH, OWNED BYOWNER TO, eRENAME
TO, che sono estensioni PostgreSQL.