Créer une clé primaire auto incrémentée dans postgresql, en utilisant une séquence personnalisée :
Étape 1, créez votre séquence :
create sequence splog_adfarm_seq
start 1
increment 1
NO MAXVALUE
CACHE 1;
ALTER TABLE fact_stock_data_detail_seq
OWNER TO pgadmin;
Étape 2, créez votre tableau
CREATE TABLE splog_adfarm
(
splog_key INT unique not null,
splog_value VARCHAR(100) not null
);
Étape 3, insérer dans votre tableau
insert into splog_adfarm values (
nextval('splog_adfarm_seq'),
'Is your family tree a directed acyclic graph?'
);
insert into splog_adfarm values (
nextval('splog_adfarm_seq'),
'Will the smart cookies catch the crumb? Find out now!'
);
Étape 4, observez les rangs
el@defiant ~ $ psql -U pgadmin -d kurz_prod -c "select * from splog_adfarm"
splog_key | splog_value
----------+--------------------------------------------------------------------
1 | Is your family tree a directed acyclic graph?
2 | Will the smart cookies catch the crumb? Find out now!
(3 rows)
Les deux rangées ont des clés qui commencent à 1 et sont incrémentées de 1, comme défini par la séquence.
Bonus Elite ProTip :
Les programmeurs détestent taper, et taper le nextval('splog_adfarm_seq')
est ennuyeux. Vous pouvez taper DEFAULT
pour ce paramètre à la place, comme ceci :
insert into splog_adfarm values (
DEFAULT,
'Sufficient intelligence to outwit a thimble.'
);
Pour que la méthode ci-dessus fonctionne, vous devez définir une valeur par défaut pour cette colonne clé dans la table splog_adfarm. Ce qui est plus joli.
4 votes
Dans Postgres 10 ou plus, considérez qu'un
IDENTITY
au lieu d'une colonneserial
: stackoverflow.com/a/9875517/939860