PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Генериране на последователност в ред

Не. Тъй като няма естествен ред от редове в таблица на база данни, всичко, с което трябва да работите, са стойностите във вашата таблица.

Е, има специфични за Postgres системни колони cmin и ctid ти можеш злоупотреба до известна степен.

Идентификационният номер на кортежа (ctid ) съдържа номера на файловия блок и позицията в блока за реда. Така че това представлява текущото физическо подреждане на диска. По-късните допълнения ще имат по-голям ctid , обикновено . Вашият оператор SELECT може да изглежда така

SELECT *, ctid   -- save ctid from last row in last_ctid
FROM   tbl
WHERE  ctid > last_ctid
ORDER  BY ctid

ctid има тип данни tid . Пример:'(0,9)'::tid

Той обаче енестабилен като дългосрочен идентификатор, тъй като VACUUM или всяка едновременна UPDATE или някои други операции могат да променят физическото местоположение на кортеж по всяко време. За продължителността на транзакцията обаче е стабилен. И ако просто вмъквате и нищо иначе трябва да работи локално за вашата цел.

Бих добавил колона с времеви отпечатък с now() по подразбиране в допълнение към serial колона ...

Също така бих оставил колона по подразбиране попълнете вашия id колона (serial или IDENTITY колона). Това извлича числото от последователността на по-късен етап, отколкото изричното извличане и след това го вмъкването, като по този начин минимизира (но не елиминира) прозореца за състояние на състезание - шансът, че по-нисък id ще бъде вмъкнат по-късно. Подробни инструкции:

  • Колона на таблицата с автоматично увеличение


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-новите тенденции в PostgreSQL:Най-отнемащи време задачи и важни показатели за проследяване

  2. Разлика между език sql и език plpgsql във функциите на PostgreSQL

  3. Тип данни на Postgres ENUM или ПРОВЕРКА НА ОГРАНИЧЕНИЕТО?

  4. Как мога да вмъкна JSON обект в Postgres с помощта на Java readyStatement?

  5. Как мога да импортирам данни от ASCII (ISO/IEC 8859-1) в моята база данни Rails/PGSQL?