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
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 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 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à
| 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 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_called flag. Il modulo a due parametri imposta il last_value campo della sequenza sul valore specificato e imposta il is_called 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_called 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: 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