PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL - kolejna wartość szeregowa w tabeli

Jeśli chcesz uzyskać identyfikator i go zwrócić, możesz użyć nextval() , który przesuwa sekwencję bez wstawiania żadnych danych.

Zwróć uwagę, że jeśli jest to SERIAL kolumna, musisz znaleźć nazwę sekwencji na podstawie nazwy tabeli i kolumny w następujący sposób:

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

Nie ma gwarancji, że zobaczysz te identyfikatory w kolejności (sekwencja generuje je w kolejności, ale wiele sesji może zażądać identyfikatora i jeszcze go nie używać lub wycofać INSERT a identyfikator nie zostanie ponownie wykorzystany), ale istnieje gwarancja, że ​​będą unikalne, co zwykle jest ważne.

Jeśli robisz to często bez faktycznego używania identyfikatora, w końcu wykorzystasz wszystkie możliwe wartości 32-bitowej integer kolumna (tj. osiągnij maksymalną reprezentowaną liczbę całkowitą), ale jeśli użyjesz jej tylko wtedy, gdy istnieje duża szansa, że ​​faktycznie wstawisz wiersz o tym identyfikatorze, powinno być OK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie Postgresql do uzyskania n-poziomowej relacji rodzic-dziecko przechowywanej w jednej tabeli

  2. Jak ustawić wkładkę do utworzonego pliku Grails z kolejnym numerem sekwencji?

  3. Funkcja MAX() w PostgreSQL

  4. Jak mogę odczytać znacznik czasu z wartością strefy czasowej (timestamptz) z PostgreSQL w Rust?

  5. aktualizowanie istniejących rekordów o unikalną liczbę całkowitą