返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

34.2. 数据改变的可视性

发布于 2019-09-30 03:09:21 字数 543 浏览 809 评论 0 收藏 0

如果在触发器函数里执行 SQL 命令,并且这些命令访问触发器所在的表,那么你必须知道触发器的可视性规则,因为这些规则决定这些 SQL 命令是否能看到触发触发器的数据改变。简单说:

  • 语句级别的触发器遵循简单的可视性原则:在语句之前(before)触发的触发器看不到语句所做的修改,而所有修改都可以被语句之后(after)触发的触发器看到。

  • 导致触发器触发的数据改变(插入、更新、删除)通常是不能被一个 before 触发器里面执行的 SQL 命令看到的,因为它还没有发生。

  • 不过,在 before 触发器里执行的 SQL 命令将能够看到在同一个外层命令前面处理的行的改变。这一点需要仔细,因为这些改变的顺序通常是不可预期的;一个影响多行的 SQL 命令可能以任意顺序访问这些行。

  • 在一个 after 触发器被触发的时候,所有外层命令产生的数据改变都已经完成,可以被所执行的 SQL 命令看到。

有关数据可视性规则的更多信息可以在节41.4找到。节34.4里的例子包含这些规则的演示。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文