postgres中的触发器不会引发异常

时间:2015-01-10 16:17:14

标签: postgresql triggers plpgsql

我有一个在postgres中工作的触发器,它允许视图变为可更新。

CREATE OR REPLACE FUNCTION actualizaIDConductor() RETURNS 
TRIGGER AS '
    BEGIN
        RAISE NOTICE ''Working'';      

        SELECT COUNT(*) INTO bool
        FROM Infotrenes
        WHERE cod_empleado = OLD.cod_empleado;

        RAISE NOTICE ''bool = %'', bool;      

        --The id belongs to the view
        IF (bool > 0) THEN
            UPDATE ...; --This works fine
        ELSE
            RAISE EXCEPTION ''ERROR: ...'';
        END IF;

        RETURN NEW;
    END;
' LANGUAGE 'plpgsql';

当我想要更新不属于视图的行时,出现“问题”。它不是打印我的“ERROR:...”消息,而是显示UPDATE 0.它甚至不显示“工作”通知。

这是某种经理优化还是我做错了什么?我可以以某种方式打印消息吗?

1 个答案:

答案 0 :(得分:0)

此代码不应该工作 - 有未声明的变量bool(辅助 - 由于命名数据​​类型相同,它的名称错误)。所以这段代码不应该工作,也不应该提出“工作”的通知。