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

パラメータ化された名前でテーブルに挿入するPostgreSQL9.3トリガー関数

    CREATE FUNCTION log_roll_test()
      RETURNS trigger AS
    $func$
    BEGIN
       EXECUTE format('INSERT INTO %I SELECT ($1).*'
                    , to_char(NEW.updt_ts, '"log"WW'))   -- child table name
       USING NEW;
       RETURN NULL;
    END
    $func$ LANGUAGE plpgsql;

    NEWを参照することはできません クエリ文字列内。 NEW 関数本体には表示されますが、EXECUTE内には表示されません 環境。最善の解決策は、USINGの値を渡すことです。 条項。

    また、同等のto_char(NEW.updt_ts, '"log"WW')に置き換えました テーブル名。 to_char() ここではより速く、より簡単です。




    1. 列の平均を計算し、それをOracleの選択クエリに含めるにはどうすればよいですか?

    2. テーブルを変更できません。テーブル'xxx/#sql-ib265'は既に存在します

    3. MySQLデータベースへの最後の変更の日付/時刻を取得する

    4. 最初にUPDATEまたはDELETE、次にINSERT