暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBASE南大通用教学—BEFORE 和 AFTER 触发操作

原创 三金先生 2024-01-30
106

BEFORE 和 AFTER 触发操作 

  在触发事件之前或之后发生的触发操作仅执行一次。BEFORE 触发操作在触发语句之前执 行,即在触发器事件发生之前执行,AFTER 触发操作在触发语句操作完成之后执行。即使 触发语句不处理任何行,BEFORE 和 AFTER 触发操作也会执行。 

  除其它用法外,还可以使用 BEFORE 和 AFTER 触发操作来确定触发语句的效果。例如, 在更新 items 表的 quantity 列之前,可以调用 SPL 例程upd_items_p1 来计算表中所有项的 订购总数,如下例所示,该过程将总数存储在名为 old_qty 的全局变量中。


在完成触发更新之后,可以再次计算总数来看看更改了多少。下面的 SPL 例 程 upd_items_p2 再次计算了 quantity 的总数并将结果存储在局部变量 new_qty 中。然后, 它将 new_qty 与全局变量 old_qty 相比较,以查看所有订单的总量的增长是否超过 50%。 若是,该过程将使用 RAISE EXCEPTION 语句来模拟 SQL 错误。



下列触发器调用 upd_items_p1 和 upd_items_p2 以防止对 items 表的 quantity 列点进行异常 更新:


如果更新使得对所有项的订购总量增长超过 50%,那么 upd_items_p2 中的 RAISE EXCEPTION 语句终止该触发器,并显示错误。当进行事务记录的数据库服务器中的触发 器发生故障时,数据库服务器会回滚超过语句和触发操作进行的更改。有关触发器发生故 障时所发生的情况的更多信息,请参阅《GBase 8s SQL 指南:语法》中的 CREATE TRIGGER 语句。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论