Yerleşik bir sona erme özelliği yoktur, ancak amacınız alanları otomatik olarak sona erdirmek ve veritabanınızda bulunan mantığa sahip olmaksa (ve dolayısıyla bir cron işi gibi dış bağımlılık yoksa), her zaman bir tetikleyici yazabilirsiniz. Aşağıda, zaman damgası 1 dakikadan daha eski olan bir tablodan satırları silen bir tetikleyici örneği bulunmaktadır. Aynı tabloya yeni bir satır eklendiğinde çalıştırılır. Açıkça tetikleyiciyi diğer koşullarda ve gerektiği gibi çeşitli son kullanma tarihlerinde çalıştıracak şekilde ayarlayabilirsiniz. Bunun için temel olarak aşağıdaki web sitesini kullandım: 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)