【问题标题】:how to create Trigger in postgresql for checking function exit or not如何在postgresql中创建触发器以检查函数退出与否
【发布时间】:2011-06-09 04:47:05
【问题描述】:

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

【问题讨论】:

    标签: database postgresql


    【解决方案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)
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      相关资源
      最近更新 更多