2009-08-15 8 views

Répondre

4

SERIAL est un syntax sugar autour de la création et de l'utilisation de séquences.

Ainsi, vous pouvez tout faire manuellement et create un type spécial de séquence qui convient à vos besoins:

CREATE SEQUENCE tablename_colname_seq INCREMENT BY 2 START WITH 2; 

CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq'); 

ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname; 

Ou si vous avez déjà une table et une colonne SERIAL vous pouvez change la séquence sous-jacente:

ALTER SEQUENCE tablename_colname_seq INCREMENT BY 2; 

le nom de la séquence sous-jacente pourrait être récupéré par « décrire » la table en utilisant psql:

\d tablename 
+0

Je ai déjà une séquence, et curval est 3, mais je veux produire des nombres pairs 4,6,8,10 ... – yjfuk

3

simplement, définissez votre série pour augmenter de 2, et de commencer sur 1 ou 2 pour la production soit pair ou impair nombre:

Odd

CREATE SEQUENCE odd_seq INCREMENT BY 2 START WITH 1; 

Même

CREATE SEQUENCE even_seq INCREMENT BY 2 START WITH 2; 
+0

pourrais-je changer l'incrément de séquence de création par défaut de 2? – yjfuk

Questions connexes