ไม่มีคุณลักษณะการหมดอายุในตัว แต่ถ้าเป้าหมายของคุณคือการหมดอายุฟิลด์โดยอัตโนมัติและมีตรรกะอยู่ในฐานข้อมูลของคุณ (และไม่มีการพึ่งพาภายนอกเช่นงาน 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)