Création d'une séquence :

Séquence basique :

create sequence <nom_séquence> increment <valeur_nombre_entier> start <valeur_nombre_entier>

Séquence complexe avec tous les paramètres :

create temporary sequence if not exist <nom_séquence> increment <valeur_nombre_entier> minvalue <valeur_minimale_nombre_entier> maxvalue <valeur_maximale_nombre_entier> start <valeur_nombre_entier_généralement_on_choisit_valeur_minimale_nombre_entier> cache <pas_nombre_entier_si_pas_utilisé_la_valeur_est_1> cycle owned by <nom_table.nom_colonne>

 

create temporary sequence if not exist <nom_séquence> increment <valeur_nombre_entier> minvalue <valeur_minimale_nombre_entier> maxvalue <valeur_maximale_nombre_entier> start <valeur_nombre_entier_généralement_on_choisit_valeur_minimale_nombre_entier> cache <pas_nombre_entier_si_pas_utilisé_la_valeur_est_1> no cycle owned by <nom_table.nom_colonne>

 

create unlogged sequence if not exist <nom_séquence> increment <valeur_nombre_entier> minvalue <valeur_minimale_nombre_entier> maxvalue <valeur_maximale_nombre_entier> start <valeur_nombre_entier_généralement_on_choisit_valeur_minimale_nombre_entier> cache <pas_nombre_entier_si_pas_utilisé_la_valeur_est_1> cycle owned by <nom_table.nom_colonne>

 

create unlogged sequence if not exist <nom_séquence> increment <valeur_nombre_entier> minvalue <valeur_minimale_nombre_entier> maxvalue <valeur_maximale_nombre_entier> start <valeur_nombre_entier_généralement_on_choisit_valeur_minimale_nombre_entier> cache <pas_nombre_entier_si_pas_utilisé_la_valeur_est_1> no cycle owned by <nom_table.nom_colonne>

temporary :  séquence ayant une durée de vie uniquement pendant la session

unlogged : la séquence est non journalisée, cela implique qu'elle est réinitialisée en as de crash, n'est pas réplique pour un cluster , en cas de restoration elle est donc aussi réinitialisée

cycle : permet la rotation de la séquence, c'est à dire lorsque la séquence a épuisée toute les valeurs elle recommence à minvalue

 

Example :

create sequence toto increment 5 start 10;
CREATE SEQUENCE

select nextval('toto');
nextval  
---------
     10
(1 ligne)

select currval('toto');
currval  
---------
     10
(1 ligne)

 

\ds+ toto;
                              Liste des relations
Schéma | Nom  |   Type   | Propriétaire | Persistence |   Taille   | Description  
--------+------+----------+--------------+-------------+------------+-------------
public | toto | séquence | postgres     | permanent   | 8192 bytes |  
(1 ligne)

 

 

\d+ toto;
                          Séquence « public.toto »
 Type  | Début | Minimum |       Maximum       | Incrément | Cycles ? | Cache  
--------+-------+---------+---------------------+-----------+----------+-------
bigint |    10 |       1 | 9223372036854775807 |         5 | no       |     1