для определения триггера, во-первых, нам нужна особая функция, которая возвращает TRIGGER;
CREATE OR REPLACE FUNCTION "myTriggerFunction"() RETURNS TRIGGER AS $BODY$
DECLARE
myVal BOOLEAN = TRUE;
BEGIN
myVal = ( OLD."myField" > NEW."myField" );
IF myVal THEN
INSERT INTO "sampleRelatedTable"
( "id", "someField_old", "someField_new" )
VALUES
( OLD."id", OLD."myField", NEW."myField" )
;
END IF;
RETURN NULL;
END;
$BODY$ LANGUAGE 'plpgsql' VOLATILE;
так как наша «процедура запуска» готова, мы можем прикрепить ее к таблице;
CREATE TRIGGER "myTrigger"
UPDATE ON "myTable"
FOR EACH ROW EXECUTE PROCEDURE "myTriggerFunction"()
;
теперь наш триггер готов. это вызовет «myTriggerFunction» при обновлении записи в «myTable».
для подробной информации обратитесь к документации;
ПРОЦЕДУРЫ ТРИГГЕРА: https://www.postgresql.org/docs/current/static/plpgsql-trigger.html
СОЗДАТЬ ТРИГГЕР: https://www.postgresql.org/docs/current/static/sql-createtrigger.html