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

PostgreSQLテーブルの履歴の実装

    なんとか実装できました。

    CREATE TABLE "ps_counters_history"
    (
      "id" serial PRIMARY KEY,
      "timestamp" timestamp NOT NULL DEFAULT clock_timestamp(),
      "psid" integer NOT NULL,
      "counter" bigint[] NOT NULL
    );
    
    CREATE OR REPLACE FUNCTION ps_counters_history_trigger()
      RETURNS trigger AS
    $BODY$
      DECLARE
        table_name text;
      BEGIN
        table_name := 'ps_counters_history_' || to_char(CURRENT_DATE, 'yyyy_mm');
        IF NOT EXISTS (SELECT 1 FROM pg_class WHERE relname = table_name)
        THEN
          EXECUTE 'CREATE TABLE IF NOT EXISTS ' || table_name ||
                  ' () INHERITS (ps_counters_history);';
        END IF;
        EXECUTE 'INSERT INTO ' || table_name ||
                '(psid, counter) VALUES ($1.psid, $1.counter);' USING NEW;
        RETURN NEW;
      END
    $BODY$
      LANGUAGE plpgsql;
    
    CREATE TRIGGER ps_counters_history_trigger
    AFTER INSERT OR UPDATE ON ps_counters FOR EACH ROW
    EXECUTE PROCEDURE ps_counters_history_trigger();
    



    1. x86およびx64プログラム用に2つの別々のソリューションを必要としないようにしています

    2. OracleでUTILSを使用できますか?

    3. mysqlテーブルから特定の行を選択します

    4. 他の 2 つの属性から Oracle データベースに新しい属性を作成する