как создать триггер в postgresql для проверки выхода из функции или нет - PullRequest
3 голосов
/ 09 июня 2011

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

1 Ответ

4 голосов
/ 09 июня 2011

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

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 является только примером столбца.Используйте любой столбец, который вам нравится из строки NEW (или его нет) в сообщении.

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

CREATE TABLE my_table (
    some_column int CHECK (some_column between 0 and 10),
    other_column int CHECK (other_column < some_column)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...