use*_*308 7 postgresql plpgsql quoting
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
Run Code Online (Sandbox Code Playgroud)
触发
create trigger msgfail before insert on first for each row
execute procedure msgfailerror()
Run Code Online (Sandbox Code Playgroud)
给出错误:
"不能"或其附近的语法错误第5行:RAISE EXCEPTION'不能有负面...
对于每个行字段,我几乎有一个验证.我希望触发器在插入完成时检查所有验证,然后一次性提高错误日志.我应该在加薪通知中使用加薪例外吗?
例如:
Insert into first (first_column, noces,dob) values ('4545','75','545')
Run Code Online (Sandbox Code Playgroud)
我正在检查noces是否小于first_column,对于同一行我想检查dob> 80以及first_column是否为整数并且为所有验证引发错误.提前致谢
Fra*_*ens 20
引用是错误的.使用美元报价$$更容易:
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;
Run Code Online (Sandbox Code Playgroud)
但另一方面,检查约束有什么问题?
你没有什么问题,唯一的问题是使用引号
请更换 :
RAISE EXCEPTION 'cannot have a negative salary';
Run Code Online (Sandbox Code Playgroud)
到:
RAISE EXCEPTION ''cannot have a negative salary'';
Run Code Online (Sandbox Code Playgroud)
'' 与 '' 不同
'' = 两个单引号