1

在我的 SQL for Business 课程开始更好地理解一些概念之前,我正在尝试自己构建一个简单的数据库,因为我是一个苦苦挣扎的初学者。我想在我的 Hotel 表上创建一个 AFTER 触发器,该触发器从 Rooms 表中删除匹配 (:old.HOTEL_ID) 的任何记录。我一直在在线阅读触发器,但我仍然无法理解如何编写触发器的主体。我正在使用 Oracle,因为在我没有经验的情况下感觉更舒服。我希望这里的社区可以让我对此有所了解。

我试过了

CREATE TRIGGER tblHotel_T1 
  AFTER DELETE ON tblHotel 
  FOR EACH ROW

我有

DELETE FROM tblrooms 
  WHERE hotHotel_ID=:old.hotHotel_ID;

我只是不确定如何将触发器输入 Oracle,因为我第一次开始使用 SQL Studio Manager。尽管 Oracle 看起来更简单,但我不习惯用户界面。

然后 Oracle 提供一个“WHEN”字段,然后是一个“Trigger body”字段。这就是我感到困惑的地方,因为我不确定如何将其全部输入。

4

1 回答 1

1

如果您发布您已经尝试过的内容,这将帮助我们帮助您,向我们展示您哪里出错了。

听起来你想要的触发器是

CREATE OR REPLACE TRIGGER trg_hotel_del
  AFTER DELETE ON hotel
  FOR EACH ROW
BEGIN
  DELETE FROM rooms
   WHERE hotel_id = :old.hotel_id;
END;

我假设您的目标是创建一个在删除后触发的触发器(当您在表中插入或更新一行时删除所有房间似乎很奇怪HOTEL)。

当然,实际上,您将创建一个外键约束来强制执行此操作,而不是创建触发器。

于 2013-10-07T01:20:33.803 回答