PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL - valeur de série suivante dans une table

Si vous souhaitez réclamer un ID et le renvoyer, vous pouvez utiliser nextval() , qui fait avancer la séquence sans insérer de données.

Notez que s'il s'agit d'un SERIAL colonne, vous devez trouver le nom de la séquence en fonction du nom de la table et de la colonne, comme suit :

Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;

Il n'y a aucune garantie absolue que vous verrez ces identifiants revenir dans l'ordre (la séquence les génère dans l'ordre, mais plusieurs sessions peuvent réclamer un identifiant et ne pas encore l'utiliser, ou annuler un INSERT et l'identifiant ne sera pas réutilisé) mais il y a une garantie qu'ils seront uniques, ce qui est normalement l'important.

Si vous faites cela souvent sans réellement utiliser l'ID, vous finirez par utiliser toutes les valeurs possibles d'un integer 32 bits colonne (c'est-à-dire atteindre l'entier représentable maximum), mais si vous ne l'utilisez que lorsqu'il y a de fortes chances que vous insériez réellement une ligne avec cet ID, cela devrait être OK.