我为航班预订数据库创建了此触发器,其中触发器用于防止在使用delete sql语句时删除保留的预订。我有两种状态。一个是' r'保留,另一个是' c'取消。我的任务是确保无法删除预订的预订,如果用户试图删除预订,则会引发我的示例触发器中显示的异常。
我创建了这个触发器并且已经成功执行但是当我通过删除状态为' r'的预订预订来测试它时。它运行并说"查询成功返回:一行受影响......"这不是我想要的。我希望它提出异常而不是删除预订。
CREATE FUNCTION prevent_deletion() RETURNS trigger AS $prevent_deletion$
BEGIN
IF 'status' = 'r' THEN
RAISE EXCEPTION 'You cannot delete reserved bookings';
END IF;
RETURN NEW;
END;
$prevent_deletion$ LANGUAGE plpgsql;
CREATE TRIGGER prevent_deletion AFTER DELETE ON flightbooking
FOR EACH ROW EXECUTE PROCEDURE prevent_deletion();
答案 0 :(得分:1)
这一行:
IF 'status' = 'r' THEN
...将字符串'status'
与字符串'r'
进行比较(当然,它们永远不会相等......)。
将字段 status
与字符串'r'
进行比较,如下所示:
IF OLD.status = 'r' THEN