【发布时间】: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