如何在PostgreSQL中创建触发器以检查函数是否存在

3

我对postgresql和数据库部分都是新手。我想使用插入语句之前的触发器来检查postgresql中的函数是否存在。有人知道如何创建这样的触发器吗?

1个回答

4
创建一个特殊的触发器函数:
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值,甚至更新其他表。

请注意,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)
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接