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

Jak wyświetlić wszystkie tabele ze zmianami danych w ciągu ostatnich 24 godzin?

Najpierw rozważ mój komentarz.

Postgres do wersji 9.4 włącznie nie rejestruje znaczników czasu, kiedy wiersze zostały wstawione lub zaktualizowane.

W nagłówkach wierszy znajduje się kilka kolumn systemowych które mogą pomóc w pracy kryminalistycznej. Fizyczna kolejność wierszy (ctid ) może być wskaźnikiem, jeśli od tego czasu nic się nie stało ze stołem. W prostych przypadkach nowe wiersze są dołączane do fizycznego końca tabeli podczas wstawiania, więc ctid wskazuje, co zostało wstawione jako ostatnie - dopóki nic się nie zmieni w tabeli. Postgres może dowolnie zmieniać fizyczną kolejność wierszy, na przykład za pomocą VACUUM . Dowolna UPDATE pisze również nową wersję wiersza, która może zmienić fizyczną pozycję. Nowa wersja nie musi być na końcu tabeli. Postgres stara się zachować nową wersję wiersza na tej samej stronie danych, jeśli to możliwe (GORĄCA aktualizacja ) ...

To powiedziawszy, oto proste zapytanie, aby uzyskać fizycznie ostatnie wiersze dla danej tabeli:

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

Powiązane odpowiedzi na dba.SE ze szczegółowymi informacjami:

Wstaw identyfikator transakcji xmin może się przydać:

Jeśli zdarzy ci się mieć kopię zapasową dla testowej bazy danych tuż przed incydentem, byłoby być pomocnym. Przywróć stary stan do oddzielnego schematu testowej bazy danych i porównaj tabele ...

Zazwyczaj dodaję jeden lub dwa timestamptz kolumny do ważnych tabel, kiedy wiersz został wstawiony i / lub kiedy był aktualizowany po raz ostatni. To by być teraz niezwykle użytecznym...

Co by również dla Ciebie:funkcje "temporal" wprowadzone w standardzie SQL z SQL:2011 . Ale to jeszcze nie jest zaimplementowane w Postgresie.
W Postgres Wiki jest strona .
Istnieje również nieoficjalne rozszerzenie na PGXN . Nie testowałem tego i nie mogę powiedzieć, jak daleko jest.

Postgres 9,5 wprowadza funkcję rejestrowania sygnatur czasowych zatwierdzania (np. @Craig skomentował ). Należy włączyć ręcznie przed rozpoczęciem nagrywania.Instrukcja:

I kilka funkcji do współpracy.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalowanie Orafce.sql 3.0 w systemie Windows 7

  2. Usunąć bazę danych dostępną dla innych użytkowników?

  3. Sequelize Error:Relacja nie istnieje

  4. Czy mogę użyć polecenia \copy do funkcji postgresql?

  5. Ściągawka wydajnościowa dla PostgreSQL