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