簡體   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