как создать триггер в postgresql для проверки выхода функции или нет

#database #postgresql

#База данных #postgresql

Вопрос:

Я новичок в postgresql и части базы данных. Я хочу проверить выход функции или нет в postgresql, используя триггер перед инструкцией insert. кто-нибудь знает, как создать этот триггер?

Ответ №1:

Создайте специальную триггерную функцию:

 CREATE OR REPLACE FUNCTION some_function() 
RETURNS trigger AS $$
    BEGIN
        IF some_condition THEN
            RAISE EXCEPTION 'Some message for id %', NEW.id;
        END IF;
        RETURN NEW;
    END;
$$ LANGUAGE plpgsql;
  

Затем определите триггер для его запуска

 CREATE TRIGGER some_trigger 
BEFORE INSERT OR UPDATE ON some_table
FOR EACH ROW EXECUTE PROCEDURE some_function();
  

При возникновении исключения обновление завершится ошибкой.

Выполняемый SQL может быть произвольной сложности, включающий любой запрос или функцию, которые вам нравятся. Он также может изменять НОВЫЕ значения через SET NEW.some_column = some_value или даже обновлять другие таблицы.

Обратите внимание, что NEW.id это только пример столбца. Используйте любой столбец, который вам нравится, из НОВОЙ строки (или нет) в сообщении.

Если проверка локализована в строке, рассмотрите возможность использования ограничения столбца, например:

 CREATE TABLE my_table (
    some_column int CHECK (some_column between 0 and 10),
    other_column int CHECK (other_column < some_column)
)