sql >> Databáze >  >> RDS >> PostgreSQL

(Postgresql) proveďte spouštěcí funkci tabulky vložení hodnoty ID změněného řádku do tabulky protokolu pro vlastní replikaci

Podařilo se mi to vyřešit změnou AFTER na BEFORE ve spouštěči, což jsem si zpočátku myslel, že nebude fungovat, nebo:

    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. Jak pomocí PL/SQL dostanu obsah souboru do blobu?

  2. Funkce PDO a IS NOT NULL

  3. Obnovte stránku PHP na každou předem definovanou sekundu

  4. Laravel výmluvný dotaz na správná data