在 PostgreSQL 中创建触发器时"CREATE"或接近 的语法错误



我正在尝试制作一个触发器,当一行被输入到一个表中时,如果该行中的某个值存在于另一个表。我的桌子是:

汽车,租赁,请求

我使用的代码:

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( );

我得到一个错误说:

错误:在"处或附近出现语法错误;CREATE";

第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( );

如果有人知道原因的话,我可以用一个解释:(

最新更新