Come usare le sequenze di Postgres

Come usare le sequenze di Postgres
Le sequenze sono un tipo speciale di oggetto di database che generano identificatori numerici univoci. Una sequenza è responsabile della generazione delle chiavi primarie di un database. Le sequenze generano l'ordinamento numerico e esiste la possibilità che più sequenze contengano lo stesso numerico, ma l'ordine è diverso in ogni sequenza. Questo articolo dimostra l'uso e il funzionamento delle sequenze in Postgres. Inoltre, diversi esempi sono citati per sperimentare il funzionamento delle sequenze in Postgres.

Come creare una sequenza in Postgres

Le sequenze in Postgres vengono create seguendo la sintassi del comando di sequenza creata di seguito:

Creare sequenza

IL indica il nome che si desidera impostare per una sequenza e il contiene le proprietà estese per quella sequenza specifica. Le opzioni supportate dalla sequenza Create sono menzionate nella sezione seguente:

Opzioni supportate dal comando Crea sequenza

È possibile creare una sequenza che ha parametri definiti dall'utente utilizzando il comando Crea Sequence. Le seguenti opzioni sono supportate da questo comando:

[Incremento [di]]: Questa opzione crea la sequenza con un incremento di un numero numerico specifico. Il valore predefinito è 1. Inoltre, se il valore dell'incremento è positivo, l'ordine sarà ascendente mentre l'ordine decrescente può essere ottenuto passando il valore negativo.

[AS SmallInt | Int | Bigint]: Il parametro del tipo di dati consente di definire il modello di sequenza. Per impostazione predefinita, il bigint viene utilizzato come tipo di dati.

[Minvalue] o [nessun Minvalue]: Il valore minimo della sequenza può essere specificato utilizzando questa opzione. Se questa opzione viene lasciata vuota, il valore massimo predefinito viene impostato in base al tipo di dati specificato.

[MaxValue] o [nessun minvalue]: Questa opzione è reciproca al suddetto, dove è possibile impostare il valore massimo per la sequenza. Inoltre, se non impostato, viene considerato il valore predefinito del tipo di dati.

[Inizia [con] avvio]: Indica il valore dell'inizio della sequenza.

[Ciclo] o [nessun ciclo]: Se questa opzione è definita, il valore della sequenza viene ripreso dopo aver raggiunto il limite massimo. Il valore predefinito, in questo caso, non è un ciclo e restituisce un errore dopo aver raggiunto il limite specificato della sequenza.

[POSSEDUTO DA ]: Questa opzione viene utilizzata per associare la sequenza a una colonna specifica di una tabella. Di conseguenza, quando la colonna viene eliminata, anche la sequenza viene eliminata automaticamente.

Le sezioni imminenti chiariranno meglio il concetto di una sequenza in Postgres.

Come creare una sequenza in Postgres

Questa sezione presenta diversi esempi per creare una sequenza da più prospettive. Ogni esempio si riferisce a un diverso tipo di sequenza.

Esempio 1 : Questo comando crea una sequenza chiamata "Linuxhint" con il valore iniziale di 5 e il valore di incremento di 2:

# Crea sequenza LinuxHint Increment 2 Start 5;

Esempio 2: Inoltre, se l'incremento è impostato su qualsiasi valore negativo (-), la sequenza inizia dal valore massimo e scende al valore minimo specificato. Ad esempio, il comando fornito di seguito creerà una sequenza con le seguenti proprietà:

- "Linux"Come nome di sequenza

- "-2"Come valore di incremento che significa che la sequenza scenderà con una differenza di -2.

- "10"Come valore iniziale, poiché l'incremento è un valore negativo, il valore massimo sarebbe anche 10.

- Infine, viene utilizzato anche il parametro del ciclo

# Crea sequenza Linux Increment -2 Minvalue 2 MaxValue 10 Avvia 10 ciclo;

Come ottenere sequenze di un database

Ogni sequenza è associata a un database. Ad esempio, abbiamo effettuato l'accesso al Linuxhint database e abbiamo recuperato tutte le sequenze con l'aiuto del comando fornito di seguito:

Nel comando sotto stabilito, il Relname E sequence_name sono ottenuti da Pg_class. IL Pg_class In Postgres contiene le informazioni delle tabelle sui database.

Vedresti due categorie nell'output; Uno si riferisce alle sequenze associate alla chiave primaria delle tabelle e l'altra categoria indica le sequenze definite dall'utente create separatamente (come nella sezione sopra).

# Seleziona relname sequence_name da pg_class dove relkind = 's';

Come ottenere il valore successivo/corrente di una sequenza

Esistono diverse funzioni che possono essere utilizzate per ottenere il valore corrente e successivo di una sequenza in Postgres. La funzione NextVal stampa il valore successivo in una sequenza utilizzando la sintassi indicata di seguito:

Seleziona NextVal ('Sequence-Name')

Il comando scritto di seguito stamperà il valore successivo del "Linuxhint" sequenza. Se continui a eseguire il comando NextVal, otterresti il ​​valore successivo secondo la condizione di incremento della sequenza. Come il "Linuxhint" La sequenza è incrementata di 2, quindi ogni valore successivo verrebbe stampato dopo l'incremento di 2.

# Seleziona NextVal ('LinuxHint');

Una volta ottenuto il valore successivo, è possibile ottenere il valore corrente della sequenza utilizzando la funzione Currval. Il Currval stamperà l'output ottenuta dalla funzione NextVal. Ad esempio, l'ultima funzione NextVal ha mostrato l'uscita 7, quindi il risultato di Currval deve essere 7. Allo stesso modo, qualunque valore sia ottenuto utilizzando la recente funzione NextVal, deve essere stampato da Currval. La funzione Currval opera sulla seguente sintassi:

Seleziona Currval ('Sequence-Name')

Ottiamo il valore corrente della sequenza "Linuxhint" con l'aiuto del comando sopra menzionato:

# Seleziona Currval ('LinuxHint');

Inoltre, la funzione Currval dipende dalla funzione NextVal. Se la funzione NextVal non è ancora applicata a nessuna sequenza, non è possibile utilizzare la funzione Currval per ottenere il valore corrente. Ad esempio, se applichiamo la funzione Currval sul "Linux" Sequenza su cui non abbiamo applicato la funzione NextVal, quindi verrà visualizzato il seguente errore.

# Seleziona Currval ('Linux');

Questo errore può essere risolto eseguendo la funzione NextVal sulla sequenza mentre l'abbiamo vissuta sul "Linux" sequenza e l'errore viene risolto.

# Seleziona NextVal ('Linux');
# Seleziona Currval ('Linux');

Come eliminare una sequenza

È possibile eliminare qualsiasi sequenza dal tuo database utilizzando la sequenza di drop di Postgres. In caso di abbandono la tabella, una sequenza di proprietà di qualsiasi colonna verrebbe eliminata. Il comando fornito qui lascia cadere il "Linux" sequenza.

# Drop Sequence se esiste Linux;

Conclusione

In generale, ciò che ti viene in mente dopo aver ottenuto il sequenza parola? Un elenco ordinato di numeri. Sì, il concetto è lo stesso anche in Postgres. Questo post spiega il concetto di sequenza e dimostra la sua funzionalità di base in Postgres. Abbiamo studiato la creazione di sequenze in diversi modi in questa guida. Inoltre, vengono discusse anche le funzioni di valore successivo e corrente delle sequenze.