Réinitialisation auto incrément du compteur dans postgres
Je voudrais forcer l'auto incrément champ d'une table à une certaine 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 une table product
avec Id
et name
champ
- Si de nouvelles, pourquoi ne pas utiliser pgAdmin et d'inspecter les commandes qu'il va générer?
- Généralement, les tables sont nommés comme "produits" et pas comme un "produit". Dans ce cas, votre séquence sera nommé comme "products_id_seq". Assurez-vous que vous êtes à la recherche pour une séquence correcte.
Vous devez vous connecter pour publier un commentaire.
Si vous avez créé la table
product
avec unid
colonne, puis la séquence n'est pas simplement appeléproduct
, mais plutôtproduct_id_seq
(qui est,${table}_${column}_seq
).C'est le
ALTER SEQUENCE
commande dont vous avez besoin:Vous pouvez voir les séquences dans votre base de données à l'aide de la
\ds
commande psql. Si vous ne\d product
et de regarder la contrainte par défaut de votre colonne, lenextval(...)
appel de spécifier le nom de la séquence trop.ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #
, où "seq" est le sens littéral du texte, et vous le mettez dans un certain nombre de #. Ne négligez pas les traits de soulignement. 🙂ALTER SEQUENCE my_schema.product_id_seq RESTART WITH 1453
1453
, vous devriezRESTART WITH 1454
.Voici la commande que vous recherchez, en supposant que votre séquence pour le produit table est product_id_seq:
La commande suivante fait automatiquement pour vous: Cela permettra également de supprimer toutes les données dans la table. Donc, soyez prudent.
TABLE
mot-clé est redondant.TRUNCATE someTable RESTART IDENTITY;
est assez.TRUNCATE someTable RESTART IDENTITY CASCADE;
?TRUNCATE table2, table1 RESTART IDENTITY;
Pour définir la séquence de compteur:
Si vous ne connaissez pas le nom de la séquence d'utiliser le
pg_get_serial_sequence
fonction:Les paramètres sont le nom de la table et le nom de la colonne.
Ou tout simplement émettre un
\d product
à lapsql
invite:Converti à partir commentaire par souci de commodité du visiteur
Il n'est pas clair à partir de ce message que la syntaxe correcte est. Il est:
si vous voulez Réinitialiser auto incrément partir de l'interface graphique, puis suivez ces étapes.
-- Modifier la valeur de départ de la séquence
Même mais dynamique :
Je suis d'accord que l'utilisation d'un SELECT est inquiétant, mais il fonctionne.
Source :
https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment
Pour réinitialiser l'auto incrément vous devez obtenir votre nom de la séquence en utilisant la requête suivante.
Syntaxe:
Exemple:
La requête doit retourner le nom de la séquence de autoid comme "Demo_autoid_seq"
Ensuite, utilisez la requête suivante pour réinitialiser l'autoid
Syntaxe:
Exemple:
Si vous avez une table avec une colonne d'IDENTITÉ que vous souhaitez réinitialiser la valeur suivante pour vous pouvez utiliser la commande suivante:
Pour obtenir l'id de la séquence d'utilisation
Cela vous donne sequesce id tableName_ColumnName_seq
Pour Obtenir le Dernier numéro de semences utilisation
ou si vous connaissez l'id de séquence déjà l'utiliser directement.
Il vous donne le dernier numéro de semences
Pour Réinitialiser le numéro de semences utilisation