【发布时间】:2012-09-21 10:48:39
【问题描述】:
CREATE OR REPLACE FUNCTION msgfailerror() RETURNS trigger AS
' BEGIN
IF NEW.noces< new.first_column THEN
RAISE EXCEPTION 'cannot have a negative salary';
END IF;
return new;
END' LANGUAGE plpgsql
触发器
create trigger msgfail before insert on first for each row
execute procedure msgfailerror()
给出错误:
“cannot”第 5 行或附近的语法错误:RAISE EXCEPTION '不能有负数...
我对行的每个字段几乎都有一个验证。我希望触发器在插入完成时检查所有验证,然后一劳永逸地引发错误日志。我应该在 raise 通知中使用 raise 异常吗?
例如:
Insert into first (first_column, noces,dob) values ('4545','75','545')
我正在检查 noces 是否小于 first_column,对于同一行,我想检查 dob > 80 以及 first_column 是否为整数并引发所有验证的错误。提前致谢
【问题讨论】:
-
您正在进行数字比较,但您在
INSERT语句中使用了字符文字。如果noces和first_column是字符列,则<不会按照您的预期进行。 从不,从在字符列中存储数字!
标签: postgresql plpgsql quoting