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

Как да се изброят всички таблици с промени в данните през последните 24 часа?

Първо разгледайте коментара ми.

Postgres до и включително 9.4 сам по себе си не записва клеймото за време, когато редовете са били вмъкнати или актуализирани.

Има някои системни колони в заглавките на редовете които могат да помогнат в криминалистичната работа. Физическият ред на редовете (ctid ) може бъде индикатор дали нищо друго не се е случило с масата оттогава. В прости случаи нови редове се добавят към физическия край на таблица, когато се вмъкнат, така че ctid показва какво е вмъкнато последно - докато нещо не се промени в таблицата. Postgres е свободен да пренарежда физическия ред на редовете по желание, например с VACUUM . Всеки UPDATE също така записва нова версия на ред, която може да промени физическата позиция. Не е задължително новата версия да е в края на таблицата. Postgres се опитва да запази новата версия на реда на същата страница с данни, ако е възможно (ГОРЕЩА актуализация ) ...

Въпреки това, ето проста заявка за получаване на физически последните редове за дадена таблица:

SELECT ctid, *
FROM   big
ORDER  BY ctid DESC
LIMIT  10;

Свързани отговори на dba.SE с подробна информация:

Вмъкнатият идентификатор на транзакция xmin може да бъде полезно:

Ако случайно имате резервно копие за тестовата база данни точно преди инцидента, това би Бъди полезен. Възстановете старото състояние в отделна схема на тестовата DB и сравнете таблиците ...

Обикновено добавям един или два timestamptz колони към важни таблици за това кога редът е бил вмъкнат и/или кога е бил актуализиран последния път. Това би да бъде изключително полезно за вас точно сега...

Каквоби също ще бъде страхотно за вас:"временните" функции, въведени в SQL стандарта със SQL:2011 . Но това все още не е внедрено в Postgres.
Има страница в Postgres Wiki .
Има и неофициално разширение на PGXN . Не съм го тествал и не мога да кажа докъде е.

Postgres 9.5 въвежда функция за записване на времеви отпечатъци за ангажиране (като @Craig коментира ). Трябва да се активира ръчно, преди да започне да записва.Ръководството:

И някои функции за работа с него.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте колона от тип double precision[] с liquibase

  2. Как да конвертирате празно в null в PostgreSQL?

  3. PSQLEException:ГРЕШКА:релация TABLE_NAME не съществува

  4. docker-compose не стартира postgres изображение

  5. ГРЕШКА:допълнителни данни след последната очаквана колона при използване на PostgreSQL COPY