有人可以通过示例解释oracle 10g中“之前”和“之后”触发器之间的区别吗?
答案 0 :(得分:29)
首先,我将通过定义触发器来开始我的答案:触发器是在添加,修改或删除行时运行的存储过程。
触发器可以之前执行操作或 AFTER 执行操作。
在接受更改之前需要进行验证时,通常会使用 BEFORE
个触发器。它们在对数据库进行任何更改之前运行。假设您为银行运行数据库。您有一个表accounts
和一个表transactions
。如果用户从他的帐户中提款,您可能希望确保用户在其帐户中有足够的信用额度来提取。如果BEFORE
中的余额不足,transactions
触发器将允许执行此操作并阻止将行插入accounts
。
AFTER
个触发器。它们在对数据库进行更改后运行(不一定已提交)。让我们回到我们的后面的例子。成功完成交易后,您需要在balance
表中更新accounts
。 AFTER
触发器可以让您完全执行此操作。
答案 1 :(得分:7)
我不完全确定你有兴趣知道什么,所以我会保持这个基础。
触发前
触发后
答案 2 :(得分:1)
当触发操作应确定是否允许触发语句完成时,使用BEFORE TRIGGER。使用BEFORE TRIGGERS用户可以消除不必要的触发语句处理 但是,在执行触发操作之前触发语句应该完成后使用触发器。