#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)
)