触发器无法正常工作

时间:2018-08-02 07:17:40

标签: sql postgresql postgresql-9.5

任务:编写触发器以检查是否将时间表添加到已存在的事件中, 而且该房间没有为新时间表占用。如果设置正确,则允许插入。否则,您将有权 并且将向用户显示错误消息。触发器的名称为 TRIGF1()的触发功能。

不幸的是,我每次看到的唯一例外是关于房间被占用的第二个例外。第一个完全不起作用(检查表中是否已存在事件的情况(允许添加该事件) 逻辑上的问题是什么?非常感谢您的支持。

CREATE OR REPLACE FUNCTION trigf1() RETURNS TRIGGER AS $schedule_trigger$
   BEGIN
    IF (NOT((new.eid = (select reid from revent where new.eid = reid)) or (new.eid = (select seid from sevent where new.eid = seid))))
    THEN raise exception 'ERROR! event id number % does not exist in table revent and not in sevent', new.eid;
    ELSIF (exists 
        (select tsrange(schedule.sdate + schedule.stime, schedule.sdate + schedule.stime+ schedule.duration, '[]') && 
        tsrange(new.sdate + new.stime, new.sdate + new.stime+ new.duration, '[]')
         from schedule
        where new.rno=schedule.rno and new.bno=schedule.bno))
        THEN raise exception 'ERROR! The room is already occupied during this time';
    ELSE
    return new;
    END IF;
   END;
$schedule_trigger$ LANGUAGE plpgsql;

0 个答案:

没有答案