当前位置:   article > 正文

【PostgreSQL】pg触发器介绍_postgres 触发器

postgres 触发器

注: 本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。

触发器是在对指定表执行指定更改操作(SQL INSERT、UPDATE、DELETE 或 TRUNCATE 语句)时自动运行的一组操作。触发器对于强制执行业务规则、验证输入数据和保留审核跟踪等任务非常有用。

一、触发器介绍

1.1 触发器的用途:

  • 强制执行业务规则
  • 验证输入数据
  • 为不同文件中新插入的行生成唯一值。
  • 写入其他文件以进行审计跟踪
  • 从其他文件查询以进行交叉引用
  • 将数据复制到不同的文件,实现数据一致性

1.2 在业务中使用触发器的好处:

  • 加快应用程序开发速度。由于数据库存储触发器,因此不必将触发器操作编码到每个数据库应用程序中。
  •  业务规则的全局实施。定义触发器一次,然后将其重用于使用该数据库的任何应用程序。
  • 更易于维护。如果业务策略发生更改,则只需更改相应的触发程序,而不需要更改每个应用程序
  • 提高客户端/服务器环境中的性能。在结果返回之前,所有规则都在服务器上运行。
  • SQL 触发器的实现基于 SQL 标准。它支持大多数编程语言通用的构造。它支持局部变量的声明、控制过程流程的语句、将表达式结果分配给变量以及错误处理。

二、触发器语法

2.1 创建触发器

语法如下

说明

2.2 删除触发器

2.3  触发器函数中的特殊变量

三、示例

下面是触发函数的简单示例:

现在,我们可以创建触发器,该触发器将在执行时触发关联表的触发器中指定的事件。

在上面的触发器函数中,有一个新的关键字“NEW”,它是触发器的 PostgreSQL 扩展。有两个 PostgreSQL 扩展可以触发“OLD”和“NEW”。OLD 和 NEW 不区分大小写。

  • 在触发器正文中,使用 OLD 和 NEW 关键字可以访问受触发器影响的行中的列
  • 在 INSERT 触发器中,只能使用NEW.col_name。
  • 在 UPDATE 触发器中,可以使用 OLD.col_name 在更新行之前引用行的列,NEW.col_name在更新行后引用行的列。
  • 在 DELETE 触发器中,只能使用OLD.col_name;没有新行。

以 OLD 命名的列是只读的。您可以引用它(如果您具有 SELECT 权限),但不能修改它。如果您具有 SELECT 权限,则可以引用以 NEW 命名的列。在 BEFORE 触发器中,如果您具有 UPDATE 权限,则还可以使用 SET NEW.col_name = value 更改其值。这意味着您可以使用触发器来修改要插入到新行或用于更新行的值。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/786022
推荐阅读
相关标签
  

闽ICP备14008679号