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 |