Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Chapitre 9. Fonctions et op�rateurs | Avance rapide | Suivant |
Cette section d�crit les fonctions de PostgreSQL pour op�rer sur les objets de s�quence. Les objets de s�quence (aussi appel�s des g�n�rateurs de s�quence ou simplement des s�quences) sont des tables sp�ciales � ligne seule cr��es avec la commande CREATE SEQUENCE. Un objet s�quence est habituellement utilis� pour g�n�rer des identifiants uniques pour les lignes d'une table. Les fonctions de s�quence, list�es dans Tableau 9-34, fournissent des m�thodes simples et saines avec des utilisateurs multiples pour obtenir des valeurs de s�quences successives � partir de l'objet s�quence.
Tableau 9-34. Fonctions s�quence
Fonction | Type de retour | Description |
---|---|---|
nextval (text) | bigint | Avance la s�quence et renvoie la nouvelle valeur |
currval (text) | bigint | Valeur de retour obtenu le plus r�cemment avec
nextval |
setval (text,
bigint) | bigint | Initialise la valeur courante de la s�quence |
setval (text,
bigint, boolean) | bigint | Initialise la valeur courante de la s�quence et le drapeau is_called |
Pour des raisons largement historiques, la s�quence � utiliser sur l'appel de la fonction s�quence est sp�cifi�e par un argument de type texte. Pour achever quelques compatibilit� avec la gestion de noms SQL ordinaires, les fonctions s�quence convertissent leur arguments en minuscule sauf si la cha�ne est entre des guillemets doubles. Donc,
nextval('foo') op�re sur la s�quence foo nextval('FOO') op�re sur la s�quence foo nextval('"Foo"') op�re sur la s�quence Foo
Le nom de la s�quence peut �tre qualifi� avec le sch�ma si n�cessaire :
nextval('mon_schema.foo') op�re sur mon_schema.foo nextval('"mon_schema".foo') identique � ci-dessus nextval('foo') cherche dans le chemin de recherche pour foo
Bien s�r, l'argument texte peut �tre le r�sultat d'une expression, pas seulement un simple litt�ral, qui est utile occasionellement.
Les fonctions s�quence disponibles sont :
nextval
Avance l'objet s�quence � sa prochaine valeur et renvoie cette valeur.
Ceci se fait de fa�on atomique : m�me si les sessions multiples
ex�cutent nextval
de fa�on concurrente, chacun va
recevoir proprement une valeur de s�quence distincte.
currval
Renvoie la valeur la plus r�cemment obtenue par
nextval
pour cette s�quence dans la session
actuelle. (Une erreur est rapport�e si nextval
n'a
jamais �t� appel� pour cette s�quence dans cette session.) Notez que,
parce qu'il renvoie une valeur locale � la session, il donne une
r�ponse pr�visible m�me si les autres sessions ex�cutent
nextval
entre temps.
setval
R�initialise la valeur du compteur de l'objet s�quence. La forme avec
deux param�tres initialise le champ last_value de la
s�quence � la valeur sp�cifi�e et initialise le champ
is_called � true, signifiant que
le prochain nextval
avancera la s�quence avant de
renvoyer une valeur. Dans la forme � trois param�tres,
is_called pourrait �tre initialis� soit �
true soit � false. S'il est
initialis� � false, le prochain
nextval
retournera exactement la valeur sp�cifi�e
et l'avancement de la s�quence commence avec le
nextval
suivant. Par exemple,
SELECT setval('foo', 42); Le prochainnextval
renverra 43 SELECT setval('foo', 42, true); Identique � ci-dessus SELECT setval('foo', 42, false); Le prochainnextval
renverra 42
Le r�sultat renvoy� par setval
est juste la valeur
du second argument.
Important�: Pour �viter le blocage des transactions concurrentes qui obtiennent des nombres de la m�me s�quence, une op�ration
nextval
n'est jamais annul�e ; c'est-�-dire qu'une fois que la valeur a �t� r�cup�r�e, elle est consid�r�e utilis�e, m�me si la transaction qui annule lenextval
apr�s. Ceci signifie que les transactions annul�es pourraient laisser des <<�trous�>> inutilis�s dans la s�quence des valeurs assign�es. Les op�rationssetval
ne sont jamais annul�es.
Si un objet s�quence a �t� cr�� avec les param�tres par d�faut, les
appels � nextval
sur celui-ci renverront les valeurs
successives � partir de 1. D'autres comportements peuvent �tre obtenus en
utilisant des param�tres sp�ciaux de la commande CREATE SEQUENCE ; voir la page de r�f�rence de la commande
pour plus d'informations.
Pr�c�dent | Sommaire | Suivant |
Fonctions pour le type des adresses r�seau | Niveau sup�rieur | Expressions conditionnelles |