postgresql错误:语法错误位于或接近;“返回”;

postgresql错误:语法错误位于或接近;“返回”;,postgresql,plpgsql,database-trigger,Postgresql,Plpgsql,Database Trigger,我对psql一无所知。当我使用 要做一些作业,系统会返回此错误 ERROR: syntax error at or near "RETURNS" 感谢您的帮助。 这是我的psql: CREATE TABLE HotelStays (roomNum INTEGER NOT NULL, arrDate DATE NOT NULL, depDate DATE NOT NULL, guestName CHAR(30) NOT NULL, PRIMARY KEY (roomNum, arrDate))

我对psql一无所知。当我使用 要做一些作业,系统会返回此错误

ERROR: syntax error at or near "RETURNS"
感谢您的帮助。 这是我的psql:

CREATE TABLE HotelStays
(roomNum INTEGER NOT NULL,
arrDate DATE NOT NULL,
depDate DATE NOT NULL,
guestName CHAR(30) NOT NULL,
PRIMARY KEY (roomNum, arrDate))
;

CREATE OR REPLACE FUNCTION stopInsert RETURNS trigger AS
$body$
DECLARE
  availableArrDate DATE;
  checkRoomNum INTEGER;
BEGIN
  if (NEW.arrDate >= NEW.depDate) then
    return null;
   end if;

  checkRoomNum = NEW.roomNum;

  select h.depDate into availableArrDate
  from HotelStays h
  where h.roomNum = checkRoomNum
  order by h.depDate DESC
  LIMIT 1;
  if (availableArrDate > NEW.arrDate)
    return null;
  end if;
END;
$body$ LANGUAGE plpgsql;

create trigger stopInsert before insert ON HotelStays 
For each row
execute procedure stopInsert();

函数名中需要有
()

CREATE OR REPLACE FUNCTION stopInsert() RETURNS trigger AS
                                      ^
--------------------------------------|
如果
语句也不正确,则表示缺少
然后

if (availableArrDate > NEW.arrDate) then --<< THEN is required
  return null;
end if;
if(availableArrDate>NEW.arrDate)则--