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

(Postgresql)カスタムレプリケーションのために、テーブルトリガー関数が変更された行のID値をログテーブルに挿入するようにします

    トリガーでAFTERをBEFOREに変更することでこれを解決できましたが、最初は機能しないと思っていました。または:

        CREATE OR REPLACE FUNCTION Insert() RETURNS TRIGGER AS $ReplInsert$
        BEGIN
            IF (TG_OP = 'DELETE') THEN
                INSERT INTO "log" ("Operation","ID","NAME")
        VALUES ('DELETE', OLD.ID, OLD.NAME);
                RETURN OLD;
            ELSIF (TG_OP = 'UPDATE') THEN
                INSERT INTO "log" ("Operation","ID","NAME")
        VALUES ('UPDATE', NEW.ID ,NEW.NAME);
                RETURN NEW;
            ELSIF (TG_OP = 'INSERT') THEN
                INSERT INTO "log" ("Operation","ID","NAME")
        VALUES ('UPDATE', NEW.ID , NEW.NAME);
                RETURN NEW;
            END IF;
            RETURN NULL; 
        END;
    $ReplInsert$ LANGUAGE plpgsql;
    
    CREATE TRIGGER logTrg
    BEFORE INSERT OR UPDATE OR DELETE ON "FIRST_NAME"
        FOR EACH ROW EXECUTE PROCEDURE Insert();
    



    1. AWSRDSでのMySQLデータベースおよびOracleデータベースでのJDeveloperの使用パート2

    2. curdatemysqlに時間と分を追加する方法

    3. MariaDBのコミュニティに迅速なイノベーションを提供

    4. mysqlクエリの「IN」句でPHPの値の配列を使用するにはどうすればよいですか?