

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`
<a name="alter-sequence-syntax-support"></a>

`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`](create-sequence-syntax-support.md) 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à](sequences-identity-columns-working-with.md)

## Sintassi supportata
<a name="alter-sequence-supported-syntax"></a>

```
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
<a name="alter-sequence-description"></a>

`ALTER SEQUENCE`modifica 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 utilizzare`ALTER 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
<a name="alter-sequence-parameters"></a>

***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 increment` è facoltativa. Un valore positivo creerà una sequenza crescente, uno negativo una sequenza decrescente. Se non specificato, verrà mantenuto il vecchio valore di incremento.

***minvalue* / `NO MINVALUE`**  
La clausola opzionale `MINVALUE minvalue` determina il valore minimo che una sequenza può generare. Se `NO MINVALUE` viene 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 `MAXVALUE maxvalue` determina il valore massimo per la sequenza. Se `NO MAXVALUE` viene 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 `CYCLE` chiave opzionale può essere utilizzata per consentire alla sequenza di avvolgersi quando la *maxvalue* o *minvalue* è stata raggiunta rispettivamente da una sequenza crescente o decrescente. Se viene raggiunto il limite, il numero successivo generato sarà rispettivamente il *minvalue* o*maxvalue*.

**`NO CYCLE`**  
Se viene specificata la parola `NO CYCLE` chiave opzionale, tutte le chiamate effettuate `nextval` dopo che la sequenza ha raggiunto il valore massimo restituiranno un errore. Se non `NO CYCLE` viene specificato nessuno `CYCLE` dei due, verrà mantenuto il comportamento del vecchio ciclo.

***start***  
La clausola opzionale `START WITH start` modifica il valore iniziale registrato della sequenza. Ciò non ha alcun effetto sul valore della sequenza corrente; imposta semplicemente il valore che verranno utilizzati `ALTER SEQUENCE RESTART` dai comandi futuri.

***restart***  
La clausola opzionale `RESTART [ WITH restart ]` modifica il valore corrente della sequenza. È simile alla chiamata alla `setval` funzione con `is_called` =`false`: il valore specificato verrà restituito dalla successiva chiamata di`nextval`. Scrivere `RESTART` senza *restart* valore equivale a fornire il valore iniziale registrato da `CREATE SEQUENCE` o impostato per l'ultima volta da`ALTER SEQUENCE START WITH`.  
A differenza di una `setval` chiamata, un'`RESTART`operazione su una sequenza è transazionale e impedisce alle transazioni simultanee di ottenere numeri dalla stessa sequenza. Se questa non è la modalità operativa desiderata, `setval` dovrebbe essere utilizzata.

***cache***  
La clausola `CACHE cache` consente 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`](create-sequence-syntax-support.md) riportata di seguito.

**`OWNED BY table_name.column_name` / `OWNED BY NONE`**  
L'`OWNED BY`opzione 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 specificazione `OWNED BY NONE` rimuove qualsiasi associazione esistente, rendendo la sequenza «indipendente».

***new\$1owner***  
Il nome utente del nuovo proprietario della sequenza.

***new\$1name***  
Il nuovo nome per la sequenza.

***new\$1schema***  
Il nuovo schema per la sequenza.

## Note
<a name="alter-sequence-notes"></a>

`ALTER SEQUENCE`non 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 SEQUENCE`non influisce sullo `currval` stato della sequenza.

`ALTER SEQUENCE`può 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
<a name="alter-sequence-examples"></a>

Riavvia una sequenza chiamata`serial`, a 105:

```
ALTER SEQUENCE serial RESTART WITH 105;
```

## Compatibilità
<a name="alter-sequence-compatibility"></a>

`ALTER SEQUENCE`è conforme allo standard SQL, ad eccezione delle `SET SCHEMA` clausole`AS`,`START WITH`, `OWNED BY``OWNER TO`, e`RENAME TO`, che sono estensioni PostgreSQL.