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

Czy istnieje sposób na ustawienie czasu wygaśnięcia, po którym wpis danych jest automatycznie usuwany w PostgreSQL?

Nie ma wbudowanej funkcji wygasania, ale jeśli Twoim celem jest automatyczne wygasanie pól i posiadanie logiki zawartej w Twojej bazie danych (a tym samym brak zewnętrznej zależności, takiej jak zadanie cron), zawsze możesz napisać wyzwalacz. Poniżej znajduje się przykład wyzwalacza, który usuwa wiersze z tabeli, których sygnatura czasowa jest starsza niż 1 minuta. Jest wykonywany za każdym razem, gdy do tej samej tabeli zostanie wstawiony nowy wiersz. Możesz oczywiście ustawić wyzwalacz, aby działał na innych warunkach i dla różnych dat wygaśnięcia, w zależności od potrzeb. Użyłem do tego następującej strony internetowej: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. Jak UNION działa w PostgreSQL

  2. [Wideo] Integracja danych z PostgreSQL

  3. Jak Cot() działa w PostgreSQL

  4. Jak zminimalizować RPO dla baz danych PostgreSQL za pomocą odzyskiwania punktu w czasie?

  5. GROUP BY i agregacja kolejnych wartości liczbowych