触发后创建

时间:2013-10-07 00:53:21

标签: database oracle triggers

我正在尝试构建一个简单的数据库,然后我的SQL for Business课程开始更好地理解一些概念,因为我是一个挣扎的初学者。我想在我的酒店表上创建一个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;

自从我第一次开始使用SQL Studio Manager以来,我只是不确定如何将触发器输入Oracle。尽管Oracle看起来要简单得多,但我并没有使用用户界面。

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

1 个答案:

答案 0 :(得分: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表中插入或更新行时删除所有房间似乎很奇怪)。

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