

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à.

# Funzioni di manipolazione di sequenze
<a name="sequence-functions-syntax-support"></a>

Questa sezione descrive le funzioni per operare su oggetti di sequenza, chiamati anche generatori di sequenze o semplicemente sequenze. Gli oggetti Sequence sono tabelle speciali a riga singola create con. [`CREATE SEQUENCE`](create-sequence-syntax-support.md) Gli oggetti Sequence vengono comunemente utilizzati per generare identificatori univoci per le righe di una tabella. Le funzioni di sequenza forniscono metodi semplici e sicuri per più utenti per ottenere valori di sequenza successivi da oggetti di sequenza.

**Importante**  
Quando si utilizzano sequenze, è necessario considerare attentamente il valore della cache. 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)


| Funzione | Description | 
| --- | --- | 
| nextval ( regclass ) → bigint | Fa avanzare l'oggetto della sequenza al valore successivo e restituisce quel valore. Questa operazione viene eseguita in modo atomico: anche se più sessioni vengono eseguite nextval contemporaneamente, ognuna riceverà in modo sicuro un valore di sequenza distinto. Se l'oggetto sequenza è stato creato con parametri predefiniti, nextval le chiamate successive restituiranno valori crescenti a partire da 1. È possibile ottenere altri comportamenti utilizzando i parametri appropriati nel [`CREATE SEQUENCE`](create-sequence-syntax-support.md) comando. Questa funzione richiede USAGE un UPDATE privilegio sulla sequenza. | 
| setval ( regclass, bigint [, boolean ] ) → bigint | Imposta il valore corrente dell'oggetto della sequenza e, facoltativamente, il suo is\$1called flag. Il modulo a due parametri imposta il last\$1value campo della sequenza sul valore specificato e imposta il is\$1called campo sutrue, il che significa che il modulo successivo nextval farà avanzare la sequenza prima di restituire un valore. Anche il valore da cui verrà riportato currval viene impostato sul valore specificato. Nel formato a tre parametri, is\$1called può essere impostato su uno true ofalse. trueha lo stesso effetto del modulo a due parametri. Se è impostato sufalse, il successivo nextval restituirà esattamente il valore specificato e l'avanzamento della sequenza inizia con quanto segue. nextval Inoltre, il valore riportato da currval non viene modificato qui. Esempio: <pre>SELECT setval('myseq', 42);           -- Next nextval will return 43<br />SELECT setval('myseq', 42, true);     -- Same as above<br />SELECT setval('myseq', 42, false);    -- Next nextval will return 42</pre> Il risultato restituito da setval è solo il valore del secondo argomento. Questa funzione richiede UPDATE privilegi sulla sequenza. | 
| currval ( regclass ) → bigint | Restituisce l'ultimo valore ottenuto da nextval per questa sequenza nella sessione corrente. (Viene segnalato un errore se non è mai nextval stato chiamato per questa sequenza in questa sessione.) Poiché restituisce un valore locale della sessione, fornisce una risposta prevedibile indipendentemente dal nextval fatto che altre sessioni siano state eseguite o meno rispetto alla sessione corrente. Questa funzione richiede un USAGE SELECT privilegio sulla sequenza. | 
| lastval () → bigint | Restituisce l'ultimo valore restituito da nextval nella transazione corrente. Questa funzione è identica acurrval, tranne per il fatto che invece di prendere il nome della sequenza come argomento, si riferisce alla sequenza a cui nextval è stata applicata più di recente nella transazione corrente. È un errore chiamare lastval se non nextval è stato ancora chiamato nella transazione corrente. Questa funzione richiede USAGE o SELECT privilegia l'ultima sequenza utilizzata. | 

**avvertimento**  
Il valore ottenuto da `nextval` non viene recuperato per il riutilizzo se la transazione chiamante viene successivamente interrotta. Ciò significa che gli aborti delle transazioni o i crash del database possono causare lacune nella sequenza dei valori assegnati. Ciò può avvenire anche senza interrompere la transazione. Ad esempio, una `ON CONFLICT` clausola `INSERT` with an calcolerà la to-be-inserted tupla, inclusa l'esecuzione delle `nextval` chiamate richieste, prima di rilevare qualsiasi conflitto che potrebbe invece indurla a seguire la regola. `ON CONFLICT` Pertanto, gli oggetti sequenza di Aurora DSQL *non possono essere utilizzati per ottenere sequenze «*senza pause».  
Allo stesso modo, le modifiche allo stato della sequenza effettuate da `setval` sono immediatamente visibili alle altre transazioni e non vengono annullate se la transazione chiamante viene ripristinata.

La sequenza su cui deve operare una funzione di sequenza è specificata da un `regclass` argomento, che è semplicemente l'OID della sequenza nel catalogo di `pg_class` sistema. Tuttavia, non è necessario cercare l'OID manualmente, perché il convertitore di input del tipo di `regclass` dati farà il lavoro per te. Consulta la documentazione di PostgreSQL [sui](https://www.postgresql.org/docs/current/datatype-oid.html) tipi di identificatori di oggetti per i dettagli.