“处或附近的语法错误”;创建;在postgresql中创建触发器时
我正在尝试创建一个触发器,用于检查当一行被输入到一个表中时,该行中的某个值是否存在于另一个表中。 我的表格如下: 汽车、租金、要求 我正在使用的代码:“处或附近的语法错误”;创建;在postgresql中创建触发器时,sql,postgresql,triggers,Sql,Postgresql,Triggers,我正在尝试创建一个触发器,用于检查当一行被输入到一个表中时,该行中的某个值是否存在于另一个表中。 我的表格如下: 汽车、租金、要求 我正在使用的代码: CREATE OR REPLACE FUNCTION trigf1() RETURNS trigger AS $$ BEGIN SELECT seats FROM car WHERE lno=new.lno; IF seats=!(SELECT seats FROM request WHERE rno=new.rno) THEN raise e
CREATE OR REPLACE FUNCTION trigf1() RETURNS trigger AS $$
BEGIN
SELECT seats FROM car WHERE lno=new.lno;
IF seats=!(SELECT seats FROM request WHERE rno=new.rno)
THEN
raise exception 'assignment contradicts design'
END IF;
RETURN null;
END;
$$
CREATE TRIGGER 'T1' BEFORE INSERT ON rent
for each row
EXECUTE PROCEDURE trigf1( );
我得到一个错误,说:
错误:“创建”处或附近出现语法错误
第13行:插入租金前创建触发器“T1”
有人知道为什么吗?不知道为什么,但这解决了问题:
CREATE OR REPLACE FUNCTION trigf1() RETURNS trigger AS $$
BEGIN
SELECT seats FROM car WHERE lno=new.lno;
IF seats=!(SELECT seats FROM request WHERE rno=new.rno)
THEN
raise exception 'assignment contradicts design';
END IF;
RETURN null;
END;
$$language plpgsql;
CREATE TRIGGER T1 BEFORE INSERT ON rent
for each row
EXECUTE PROCEDURE trigf1( );
如果有人知道原因,我可以用一个解释:)标识符是不带单引号编写的:
创建触发器t1…
仍然给出相同的错误:(这个$
需要是$;
。没有它,您就无法完成函数代码。$
之后缺少了一个;
,非常感谢