
La FAQ de PostgreSQLConsultez toutes les FAQ
Nombre d'auteurs : 7, nombre de questions : 51, dernière mise à jour : 8 juillet 2009
Sommaire→Syntaxe SQL et structure de données→NombresIl existe un article sur ce sujet : http://dgriessinger.developpez.com/postgresql/sequences/
Considerons la table :
CREATE TABLE test ( idauto SERIAL, monchamp TEXT, CONSTRAINT pk_idauto PRIMARY KEY (idauto));
Pour faire un INSERT il suffit d'utiliser le mot clef DEFAULT :
INSERT INTO test VALUES (default,'mon texte');
DEFAULT appelera automatiquement la valeur par defaut, dans le cas d'un SERIAL, elle appelera la fonction nextval
On a une table (ma_table) qui possede une clef primaire de type INT4 (mon_id)
SELECT * FROM ma_table;
mon_id
--------
1
2
4
5
9
Pour gerer les id avec une sequence, il faut recuperer la valeur maximum des id de la table
SELECT max(mon_id) FROM ma_table;
9
On crée la sequence
CREATE SEQUENCE ma_sequence;
et on modifie la prochaine valeur a generer (9+1) donc 10
ALTER SEQUENCE ma_sequence RESTART WITH 10;
ensuite on indique que la valeur par defaut de mon_id est la sequence :
ALTER TABLE ma_table ALTER COLUMN mon_id SET DEFAULT nextval('ma_sequence');
nota: par convention, la sequence devrait s'appeler ma_table_mon_id_seq



