繁体   English   中英

在 postgresql 中创建触发器时“CREATE”处或附近的语法错误

[英]syntax error at or near "CREATE" when making a trigger in postgresql

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

汽车, 租金, 请求

我正在使用的代码:

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

如果有人知道为什么,我可以使用解释:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM