Je voudrais forcer le champ d'incrémentation automatique 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 dans les postgres :(
J'ai une table product
avec Id
et name
champ
Réponses:
Si vous avez créé la table
product
avec uneid
colonne, la séquence n'est pas simplement appeléeproduct
, mais plutôtproduct_id_seq
(c'est-à-dire${table}_${column}_seq
).Voici la
ALTER SEQUENCE
commande dont vous avez besoin:Vous pouvez voir les séquences dans votre base de données en utilisant la
\ds
commande dans psql. Si vous le faites\d product
et regardez la contrainte par défaut pour votre colonne, l'nextval(...)
appel spécifiera également le nom de la séquence.la source
ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #
, où "seq" est le texte littéral, et vous entrez un nombre pour #. Ne négligez pas les soulignements. :-)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 la table de produits est product_id_seq:
la source
La commande suivante le fait automatiquement pour vous: cela supprimera également toutes les données du tableau. Donc sois prudent.
la source
TABLE
mot-clé est redondant.TRUNCATE someTable RESTART IDENTITY;
est assez.TRUNCATE someTable RESTART IDENTITY CASCADE;
?Pour régler le compteur de séquence:
Si vous ne connaissez pas le nom de la séquence, utilisez la
pg_get_serial_sequence
fonction:Les paramètres sont le nom de la table et le nom de la colonne.
Ou émettez simplement un
\d product
à l'psql
invite:la source
- Changer la valeur de départ de la séquence
Idem mais dynamique:
Je suis d'accord que l'utilisation d'un SELECT est dérangeante mais ça marche.
Source: https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment
la source
brew services restart postgresql
Converti à partir d'un commentaire pour le confort du visiteur
Ce message ne précise pas quelle est la syntaxe correcte. C'est:
la source
si vous souhaitez réinitialiser l'incrémentation automatique à partir de l'interface graphique, suivez ces étapes.
la source
Si vous avez une table avec une colonne IDENTITY pour laquelle vous souhaitez réinitialiser la valeur suivante, vous pouvez utiliser la commande suivante:
la source
sequence
ou vous ne pouvez pas tronquer la table. Je pense que c'est la meilleure réponsePour réinitialiser l'incrémentation automatique, vous devez obtenir le nom de votre séquence à l'aide de la requête suivante.
Syntaxe:
Exemple:
La requête renverra le nom de séquence de l'autoid comme "Demo_autoid_seq" Ensuite, utilisez la requête suivante pour réinitialiser l'autoid
Syntaxe:
Exemple:
la source
Pour obtenir l'ID de séquence, utilisez
Cela vous donnera l'ID de séquençage en tant que tableName_ColumnName_seq
Pour obtenir le dernier numéro de graine, utilisez
ou si vous savez que l'ID de séquence l'utilise déjà directement.
Il vous donnera le dernier numéro de graine
Pour réinitialiser le numéro de graine, utilisez
la source
Utilisez cette requête pour vérifier quelle est la clé de séquence avec le schéma et la table,
Utilisez cette requête pour augmenter la valeur d'incrément un par un,
Lors de l'insertion dans le tableau, la prochaine valeur incrémentée sera utilisée comme clé (111).
Utilisez cette requête pour définir une valeur spécifique comme valeur incrémentée
Lors de l'insertion dans le tableau, la prochaine valeur incrémentée sera utilisée comme clé (121).
la source
Notez que si vous avez un nom de table avec '_', il est supprimé dans le nom de la séquence.
Par exemple, nom de table: user_tokens colonne: id Nom de séquence: usertokens_id_seq
la source