PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana daftar semua tabel dengan perubahan data dalam 24 jam terakhir?

Pertama-tama pertimbangkan komentar saya.

Postgres hingga dan termasuk 9.4 tidak dengan sendirinya mencatat stempel waktu saat baris dimasukkan atau diperbarui.

Ada beberapa kolom sistem di header baris yang dapat membantu dalam pekerjaan forensik. Urutan fisik baris (ctid ) bisa menjadi indikator jika tidak ada lagi yang terjadi pada tabel sejak itu. Dalam kasus sederhana, baris baru ditambahkan ke ujung fisik tabel saat disisipkan, jadi ctid menunjukkan apa yang dimasukkan terakhir - sampai ada perubahan dalam tabel. Postgres bebas mengatur ulang urutan fisik baris sesuka hati, misalnya dengan VACUUM . UPDATE juga menulis versi baris baru, yang dapat mengubah posisi fisik. Versi baru tidak harus berada di akhir tabel. Postgres mencoba untuk menjaga versi baris baru pada halaman data yang sama jika memungkinkan (Pembaruan PANAS ) ...

Karena itu, berikut adalah kueri sederhana untuk mendapatkan secara fisik baris terakhir untuk tabel yang diberikan:

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

Jawaban terkait di dba.SE dengan informasi terperinci:

Masukkan ID transaksi xmin semoga bermanfaat:

Jika Anda memiliki cadangan untuk DB uji dari tepat sebelum kejadian, yang akan berguna. Kembalikan status lama ke skema terpisah dari DB pengujian dan bandingkan tabel ...

Biasanya, saya menambahkan satu atau dua timestamptz kolom ke tabel penting saat baris disisipkan, dan / atau saat terakhir diperbarui. Itu akan menjadi sangat berguna bagi Anda sekarang ...

Apa yang akan juga bagus untuk Anda:fitur "temporal" diperkenalkan dalam standar SQL dengan SQL:2011 . Tapi itu belum diterapkan di Postgres.
Ada halaman di Wiki Postgres .
Ada juga ekstensi tidak resmi di PGXN . Saya belum mengujinya dan tidak bisa mengatakan seberapa jauh.

Postgres 9.5 memperkenalkan fitur untuk merekam melakukan stempel waktu (seperti @Craig berkomentar ). Harus diaktifkan secara manual sebelum mulai merekam.Panduan:

Dan beberapa fungsi untuk bekerja dengannya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgres tidak mengenali tabel temp dalam fungsi

  2. Apakah mungkin untuk menyimpan nomor 1 byte di Postgres?

  3. Cara menyisipkan baris baru di PostgreSQL

  4. Mengapa Rails / ActiveRecord memberikan konstanta Postgres SyntaxError non-integer di ORDER?

  5. Cara membuat kunci asing dengan batasan pada tabel yang direferensikan di PostgreSQL