sql >> Database >  >> RDS >> PostgreSQL

Is er een manier om een ​​vervaltijd in te stellen, waarna een gegevensinvoer automatisch wordt verwijderd in PostgreSQL?

Er is geen ingebouwde vervalfunctie, maar als het uw doel is om velden automatisch te laten verlopen en de logica in uw database te hebben (en dus geen externe afhankelijkheid zoals een cron-taak), dan kunt u altijd een trigger schrijven. Hieronder ziet u een voorbeeld van een trigger die rijen verwijdert uit een tabel met een tijdstempel die ouder is dan 1 minuut. Het wordt uitgevoerd wanneer een nieuwe rij in dezelfde tabel wordt ingevoegd. U kunt de trigger natuurlijk zo instellen dat deze wordt uitgevoerd onder andere voorwaarden en voor verschillende vervaldatums. Ik heb hiervoor de volgende website als basis gebruikt: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. Uw Django-project migreren naar Heroku

  2. connect ECONNREFUSED - node js , sql

  3. SQL Server-transactielogboek - Deel 2

  4. PHP PDO voorbereide verklaring -- MySQL LIKE query