sql >> Database >  >> RDS >> PostgreSQL

(Postgresql) maak de tabeltriggerfunctie voeg de ID-waarde van de gewijzigde rij in de logtabel in, voor aangepaste replicatie

Ik kon dit oplossen door AFTER te veranderen in BEFORE in de trigger, waarvan ik aanvankelijk dacht dat het niet zou werken, of:

    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. MyISAM-dialect genereert verkeerde DDL

  2. MySql verplaatsen van Windows-server naar Linux

  3. Verbinding maken met mysql in xampp zonder wachtwoord

  4. findAll() van Sequelize krijgt geen