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

Има ли начин да се зададе време на изтичане, след което запис на данни се изтрива автоматично в PostgreSQL?

Няма вградена функция за изтичане на срока, но ако целта ви е автоматично да изтече полетата и да имате логиката, съдържаща се във вашата база данни (и по този начин без външна зависимост като cron задача), тогава винаги можете да напишете задействане. По-долу е даден пример за задействане, което изтрива редове от таблица, които имат времева марка по-стара от 1 минута. Изпълнява се всеки път, когато се вмъкне нов ред в същата таблица. Очевидно можете да настроите тригера да се изпълнява при други условия и за различни дати на изтичане, ако е необходимо. Използвах следния уебсайт като основа за това: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. Начален масив във функция за агрегиране на многоизмерен масив

  2. Функция MAX() в PostgreSQL

  3. Как мога да получа дъмп на база данни с обикновен текст на postgres на heroku?

  4. Не е намерен подходящ драйвер при включването на необходимите драйвери с maven-assembly-plugin

  5. Как да репликирате PostgreSQL данни на отдалечени сайтове