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.