sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL - další sériová hodnota v tabulce

Pokud chcete ID nárokovat a vrátit jej, můžete použít nextval() , který posune sekvenci dopředu bez vložení jakýchkoli dat.

Všimněte si, že pokud se jedná o SERIAL musíte najít název sekvence podle názvu tabulky a sloupce následovně:

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

Neexistuje žádná železná záruka, že uvidíte, že se tato ID vrátí v pořádku (sekvence je vygeneruje v pořadí, ale několik relací si může ID nárokovat a ještě je nepoužívat, nebo vrátit zpět INSERT a ID nebude znovu použito), ale existuje záruka, že budou jedinečné, což je obvykle důležité.

Pokud to děláte často bez skutečného použití ID, nakonec využijete všechny možné hodnoty 32bitového integer sloupec (tj. dosáhnout maximálního reprezentativního celého čísla), ale pokud jej použijete pouze tehdy, když je vysoká pravděpodobnost, že skutečně vložíte řádek s tímto ID, mělo by to být v pořádku.



  1. Operátor MySQL SELECT, jak získat jeden přesný výsledek řádku z podobných řádků?

  2. Postgres COUNT počet hodnot sloupců s INNER JOIN

  3. Oracle Sequence negeneruje průběžné číslo

  4. přidání primárního klíče do zobrazení SQL