我正在尝试构建一个简单的数据库,然后我的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”字段。这是我感到困惑的地方,因为我不确定如何输入它。
答案 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
表中插入或更新行时删除所有房间似乎很奇怪)。
当然,实际上,您需要创建一个外键约束来强制执行此操作而不是创建触发器。