在我的触发器过程中,我使用RAISE EXCEPTION来处理消息。我对简单的消息没有任何问题,但是如果我想给用户一些更复杂的反馈,我会遇到一个问题:连接运算符在RAISE EXCEPTION语句中不起作用。异常内的字符串连接
首先,我想这一点:
CREATE OR REPLACE FUNCTION hlidej_datum_kon() RETURNS trigger AS $$
DECLARE
od date;
BEGIN
SELECT a.datum_od FROM akce AS a WHERE a.kod_akce = (
SELECT b.kod_akce FROM sj AS b WHERE b.kod_sj = NEW.kod_sj
) INTO od;
IF NEW.datum < od THEN
RAISE EXCEPTION 'Kontext nemohl být odkryt před začátkem akce ('||TO_CHAR(od)||')!'
ROLLBACK;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
没有工作。所以我试图把整个文本放到一个文本变量中,但是我没有找到如何将变量的内容放到异常语句中,以便将它打印为消息。
我的问题是:如何在PostgreSQL触发函数中打印包含变量的消息?
只是为了完整起见,这里是我的触发器:
CREATE TRIGGER hlidej_datum_kon
AFTER INSERT OR UPDATE ON kontext
FOR EACH ROW
EXECUTE PROCEDURE hlidej_datum_kon();
END;