Как создать триггерные функции? - PullRequest
0 голосов
/ 14 мая 2018

Как создать триггеры?Я нашел статью на официальном сайте PostgreSQL, но не мог понять, что означают spj, trim и ns.Помогите мне, пожалуйста.

CREATE FUNCTION trigger_s_before_del () RETURNS trigger AS ' 
BEGIN 
if (select count(*) from spj a where trim(a.ns)=trim(OLD.ns))>0
then delete from spj where trim(spj.ns)=trim(OLD.ns); 
end if;
return OLD;
END; 
' LANGUAGE  plpgsql;

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

для определения триггера, во-первых, нам нужна особая функция, которая возвращает 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

0 голосов
/ 14 мая 2018
  • spj - это имя таблицы
  • a - псевдоним таблицы,
  • ns - имя столбца в таблице spj,
  • trim - это встроенная функция PostgreSQL.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...