CREATE SEQUENCE

Utilizzare l'istruzione CREATE SEQUENCE per creare una sequenza. Una sequenza è un oggetto di database da cui più utenti possono generare numeri interi unici.

Per creare sequenze specifiche, procedere come segue:
  • Per creare una sequenza ascendente che aumenta fino al valore massimo del tipo di dati, omettere il valore MAXVALUE o specificare NO MAXVALUE. Per le sequenze discendenti che decrescono fino al valore minimo di 1, omettere il MINVALUE o specificare NO MINVALUE.
  • Per creare una sequenza che si ferma a un limite predefinito per le sequenze ascendenti, specificare un valore per il parametro MAXVALUE. Per le sequenze discendenti, specificare un valore per il MINVALUE. Inoltre, specificare NO CYCLE. Qualsiasi tentativo di generare un numero di sequenza dopo che la sequenza ha raggiunto il suo limite provoca un errore.
  • Per creare una sequenza che si riavvia dopo aver raggiunto il suo limite, specificare CICLO.

Dopo aver creato una sequenza, è possibile accedere al suo valore in un'istruzione SQL con l'istruzione NEXT VALUE FOR (che incrementa la sequenza e restituisce il nuovo valore).

Il sistema genera numeri di sequenza indipendentemente dal fatto che la transazione venga eseguita o annullata. Se due utenti incrementano contemporaneamente la stessa sequenza, i numeri di sequenza acquisiti da ciascun utente possono avere degli spazi vuoti, perché l'altro utente sta generando numeri di sequenza. Nessun utente, tuttavia, potrà mai acquisire il numero di sequenza generato da un altro utente.

Sintassi

Sintassi per la creazione di una sequenza:
CREATE SEQUENCE <seq_name>
[ AS <datatype> ] 
[ START WITH <start_value> ] 
[ INCREMENT BY <increment> ] 
[ NO MINVALUE | MINVALUE <minimum_value> ] 
[ NO MAXVALUE | MAXVALUE <maximum_value> ] 
[ NO CYCLE | CYCLE ];

Input

Il comando CREA SEQUENZA riceve i seguenti input:
Tabella 1. CREARE SEQUENZA ingressi
Immissione Descrizione
<seq_name> Il nome della sequenza.
<datatype> Il tipo di dati. Il valore può essere di qualsiasi tipo intero esatto, come byteint, smallint, integer o bigint. Se non si specifica questa opzione, il tipo di dati predefinito è bigint. Per una descrizione dei tipi di dati e dei loro intervalli, vedere la Tabella 1.
INIZIA CON Il valore di partenza. Usare questa clausola per avviare una sequenza ascendente a un valore superiore al suo minimo o per avviare una sequenza discendente a un valore inferiore al suo massimo.

Per le sequenze ascendenti, il valore predefinito è il valore minimo della sequenza. Per le sequenze discendenti, il valore predefinito è il valore massimo della sequenza. Questo valore intero deve essere compreso tra i tipi di dati della sequenza 'minvalue e 'maxvalue.

Incrementa di Il valore di incremento. Il valore intero può essere qualsiasi numero intero positivo o negativo, ma non può essere zero. L'ampiezza di questo valore deve essere inferiore alla differenza tra il " minvalue e il " maxvalue.

Se si specifica un valore positivo, si crea una sequenza ascendente. Se si specifica un valore negativo, si crea una sequenza discendente. Se non si specifica questa opzione, l'impostazione predefinita è 1.

NO MINVALUE | MINVALUE Il valore minimo della sequenza. L'impostazione predefinita è NO MINVALUE, che equivale a specificare un valore minimo pari a 1.

MINVALUE deve essere inferiore o uguale a START WITH e deve essere inferiore a MAXVALUE.

NO MAXVALUE | MAXVALUE Il valore massimo che la sequenza può avere. L'impostazione predefinita è NO MAXVALUE, che determina il valore più grande per il tipo di dati specificato.

MAXVALUE deve essere uguale o maggiore di START WITH e deve essere maggiore di MINVALUE. Per una descrizione degli intervalli dei tipi di dati, vedere la Tabella 1.

NESSUN CICLO | CICLO Se la sequenza continua a generare valori dopo aver raggiunto il valore massimo (in una sequenza ascendente) o il valore minimo (in una sequenza discendente). L'impostazione predefinita è NO CYCLE, che significa che la sequenza si ferma quando raggiunge l'ultimo valore.

Se si specifica CICLO, quando una sequenza ascendente raggiunge il suo valore massimo, utilizza il suo valore minimo. Quando una sequenza discendente raggiunge il suo valore minimo, utilizza il suo valore massimo.

Emissione

Il comando CREATE SEQUENCE produce il seguente output:
Tabella 2. CREARE SEQUENZA uscita
Emissione Descrizione
CREATE SEQUENCE Il comando è stato eseguito correttamente.

Privilegi

È necessario essere l'utente admin, il proprietario del database o dello schema, oppure l'account deve avere l'autorizzazione di amministrazione Create Sequence.

Utilizzo

Di seguito sono riportati alcuni esempi di utilizzo:
  • Creare una sequenza come numero intero con un valore iniziale di 11, un incremento di 2, un valore minimo di 1 e un valore massimo di 100:
       CREATE SEQUENCE sequence1 As integer START WITH 11 INCREMENT BY 2
    MINVALUE 1 MAXVALUE 100 NO CYCLE;