sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLでデータエントリが自動的に削除されるまでの有効期限を設定する方法はありますか?

    組み込みの有効期限機能はありませんが、フィールドを自動的に有効期限が切れ、データベース内にロジックが含まれるようにすることを目的としている場合(したがって、cronジョブのような外部依存関係はありません)、いつでもトリガーを作成できます。以下は、タイムスタンプが1分より古いテーブルから行を削除するトリガーの例です。同じテーブルに新しい行が挿入されるたびに実行されます。必要に応じて、他の条件やさまざまな有効期限で実行するようにトリガーを設定することもできます。これの基礎として次のWebサイトを使用しました: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. MicrosoftAccessでインベントリデータベースを作成する方法

    2. AndroidSQLiteクエリ-最新の10レコードを取得

    3. データセキュリティガバナンス

    4. MySQLでゼロ除算を回避する方法