Oracle Database
sequenze
Ricerca…
Sintassi
- CREATE SEQUENCE SCHEMA.SEQUENCE {INCREMENTO DI INTEGER | INIZIA CON INTEGER | MAXVALUE INTEGER | NOMAXVALUE INTEGER | MINVALUE INTEGER | NOMINVALUE INTEGER | CYCLE INTEGER | NEGYCLE INTEGER | CACHE | NOCACHE | ORDINE | NOODER}
Parametri
Parametro | Dettagli |
---|---|
schema | nome dello schema |
incrementa di | intervallo tra i numeri |
iniziare con | il primo numero necessario |
maxvalue | Valore massimo per la sequenza |
nomaxvalue | Il valore massimo è predefinito |
minvalue | valore minimo per la sequenza |
nominvalue | il valore minimo è predefinito |
ciclo | Resetta all'inizio dopo aver raggiunto questo valore |
NOCYCLE | Predefinito |
nascondiglio | Limite di preallocazione |
nocache | Predefinito |
ordine | Garantire l'ordine dei numeri |
Nessun ordine | predefinito |
Creazione di una sequenza: esempio
Scopo
Utilizzare l'istruzione CREATE SEQUENCE per creare una sequenza, che è un oggetto di database da cui più utenti possono generare numeri interi univoci. È possibile utilizzare le sequenze per generare automaticamente i valori delle chiavi primarie.
Quando viene generato un numero di sequenza, la sequenza viene incrementata, indipendentemente dalla transazione che sta eseguendo o ripristinando. Se due utenti incrementano contemporaneamente la stessa sequenza, allora i numeri di sequenza che ogni utente acquisisce potrebbero avere spazi vuoti, perché i numeri di sequenza vengono generati dall'altro utente. Un utente non può mai acquisire il numero di sequenza generato da un altro utente. Dopo che un valore di sequenza è stato generato da un utente, quell'utente può continuare ad accedere a quel valore indipendentemente dal fatto che la sequenza venga incrementata da un altro utente.
I numeri di sequenza vengono generati indipendentemente dalle tabelle, quindi la stessa sequenza può essere utilizzata per una o più tabelle. È possibile che i singoli numeri di sequenza sembrino saltati, perché sono stati generati e utilizzati in una transazione che alla fine è stata sottoposta a rollback. Inoltre, un singolo utente potrebbe non rendersi conto che altri utenti stanno attingendo dalla stessa sequenza.
Dopo aver creato una sequenza, è possibile accedere ai relativi valori nelle istruzioni SQL con la pseudocolonna CURRVAL, che restituisce il valore corrente della sequenza o la pseudocolonna NEXTVAL, che incrementa la sequenza e restituisce il nuovo valore.
Prerequisiti
Per creare una sequenza nel proprio schema, è necessario disporre del privilegio di sistema CREATE SEQUENCE.
Per creare una sequenza nello schema di un altro utente, è necessario disporre del privilegio di sistema CREA QUALSIASI SEQUENZA.
Creazione di una sequenza: Esempio La seguente istruzione crea la sequenza customers_seq nello schema di esempio oe. Questa sequenza può essere utilizzata per fornire numeri ID cliente quando vengono aggiunte righe alla tabella clienti.
CREATE SEQUENCE customers_seq
START WITH 1000
INCREMENT BY 1
NOCACHE
NOCYCLE;
Il primo riferimento a customers_seq.nextval restituisce 1000. Il secondo restituisce 1001. Ogni riferimento successivo restituirà un valore 1 maggiore del riferimento precedente.