sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL - nästa seriella värde i en tabell

Om du vill göra anspråk på ett ID och returnera det kan du använda code>nextval() , som flyttar fram sekvensen utan att infoga några data.

Observera att om detta är en SERIAL kolumn måste du hitta sekvensens namn baserat på tabellen och kolumnnamnet, enligt följande:

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

Det finns ingen gjutjärnsgaranti för att du kommer att se dessa ID:n komma tillbaka i ordning (sekvensen genererar dem i ordning, men flera sessioner kan göra anspråk på ett ID och inte använda det ännu, eller återställa en INSERT och ID:t kommer inte att återanvändas) men det finns en garanti för att de kommer att vara unika, vilket normalt är det viktiga.

Om du gör detta ofta utan att faktiskt använda ID:t kommer du så småningom att använda upp alla möjliga värden för ett 32-bitars heltal kolumn (dvs. når det maximala representerbara heltal), men om du bara använder det när det finns en stor chans att du faktiskt kommer att infoga en rad med det ID:t borde det vara OK.



  1. startar postgresql och pgadmin i Windows utan installation

  2. Hur man kör 2 uppdateringsfrågor i en transaktion med JDBC

  3. Hur man optimerar databasen denna fråga i stor databas?

  4. MySql:Ställ in gräns för dubblettkolumn