369 votes

Réinitialiser le compteur d'incrémentation automatique en postgres

Je voudrais forcer le champ d'incrémentation automatique d'une table à une valeur, j'ai essayé avec ceci:

 ALTER TABLE product AUTO_INCREMENT = 1453
 

ET

 ALTER SEQUENCE product  RESTART WITH 1453;
ERROR:  relation "your_sequence_name" does not exist
 

Je suis nouveau sur postgres :(

J'ai un champ product avec Id et name

488voto

araqnid Points 33350

Si vous avez créé la table product avec une colonne id , la séquence n'est pas simplement appelée product , mais plutôt product_id_seq (c'est-à-dire , ${table}_${column}_seq ). Vous pouvez voir les séquences dans votre base de données en utilisant la commande \ds dans psql. Si vous utilisez \d product et examinez la contrainte par défaut pour votre colonne, l'appel nextval(...) spécifiera également le nom de la séquence.

179voto

Loolooii Points 1159

La commande suivante le fait automatiquement pour vous: Ceci supprimera également toutes les données de la table. Donc sois prudent.

 TRUNCATE TABLE someTable RESTART IDENTITY;
 

162voto

matt snider Points 938

Voici la commande que vous recherchez, en supposant que votre séquence pour la table product est product_id_seq:

ALTER SEQUENCE product_id_seq REDÉMARREZ AVEC 1453;

67voto

Clodoaldo Neto Points 26723

Pour définir le compteur de séquence:

 setval('product_id_seq', 1453);
 

Si vous ne connaissez pas le nom de la séquence, utilisez la fonction pg_get_serial_sequence :

 select pg_get_serial_sequence('product', 'id');
 pg_get_serial_sequence 
------------------------
 public.product_id_seq
 

Les paramètres sont le nom de la table et le nom de la colonne.

Ou simplement émettre un \d product à l'invite psql :

 => \d product
                         Table "public.product"
 Column |  Type   |                      Modifiers                       
--------+---------+------------------------------------------------------
 id     | integer | not null default nextval('product_id_seq'::regclass)
 name   | text    | 
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X