【问题标题】:Trigger in postgres not raising exception在 postgres 中触发不引发异常
【发布时间】:2015-03-08 19:43:34
【问题描述】:

我有一个在 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';

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

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

【问题讨论】:

  • bool 在哪里声明?我找不到它。
  • 什么版本的 Postgres?
  • 您显示的不是触发器,而是触发器函数。它自己不做任何事情。 (这也是无效的。)Example.您需要显示所有必要的信息,包括触发器和视图定义以及您的 Postgres 版本。

标签: postgresql triggers plpgsql


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-12-02
    • 2011-03-01
    • 1970-01-01
    • 2023-04-03
    • 2021-08-24
    • 2019-11-29
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多