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

Apakah ada cara untuk mengatur waktu kedaluwarsa, setelah itu entri data dihapus secara otomatis di PostgreSQL?

Tidak ada fitur kedaluwarsa bawaan tetapi jika tujuan Anda adalah untuk secara otomatis kedaluwarsa bidang dan memiliki logika yang terkandung dalam database Anda (dan dengan demikian tidak ada ketergantungan luar seperti pekerjaan cron) maka Anda selalu dapat menulis pemicu. Di bawah ini adalah contoh pemicu yang menghapus baris dari tabel yang memiliki stempel waktu lebih dari 1 menit. Itu dieksekusi setiap kali baris baru dimasukkan ke dalam tabel yang sama. Anda jelas dapat mengatur pemicu untuk dieksekusi pada kondisi lain dan untuk berbagai tanggal kedaluwarsa sesuai kebutuhan. Saya menggunakan situs web berikut sebagai dasar untuk ini:http://www.the-art-of-web.com/sql/trigger-delete-old/

CREATE TABLE expire_table (
    timestamp timestamp NOT NULL DEFAULT NOW(),
    name TEXT NOT NULL
);

INSERT INTO expire_table (name) VALUES ('a');
INSERT INTO expire_table (name) VALUES ('b');
INSERT INTO expire_table (name) VALUES ('c');

select * from expire_table;
         timestamp          | name 
----------------------------+------
 2014-09-26 15:33:43.243356 | a
 2014-09-26 15:33:45.222202 | b
 2014-09-26 15:33:47.347131 | c
(3 rows)

CREATE FUNCTION expire_table_delete_old_rows() RETURNS trigger
    LANGUAGE plpgsql
    AS $$
BEGIN
  DELETE FROM expire_table WHERE timestamp < NOW() - INTERVAL '1 minute';
  RETURN NEW;
END;
$$;

CREATE TRIGGER expire_table_delete_old_rows_trigger
    AFTER INSERT ON expire_table
    EXECUTE PROCEDURE expire_table_delete_old_rows();

INSERT INTO expire_table (name) VALUES ('d');

select * from expire_table;
         timestamp          | name 
----------------------------+------
 2014-09-26 15:36:56.132596 | d
(1 row)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kueri parameter (pengaturan postgresql.conf) seperti max_connections

  2. DATEADD setara di PostgreSQL

  3. Cara Mencapai Ketersediaan Tinggi PostgreSQL dengan pgBouncer

  4. String -> java.util.Date -> java.sql.Date (dengan cap waktu)

  5. Masukkan, pada pembaruan duplikat di PostgreSQL?