Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“处或附近的语法错误”;创建;在postgresql中创建触发器时_Sql_Postgresql_Triggers - Fatal编程技术网

“处或附近的语法错误”;创建;在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…
仍然给出相同的错误:(这个
$
需要是
$;
。没有它,您就无法完成函数代码。
$
之后缺少了一个
,非常感谢