陈老师:1415968548 郑老师:2735197625 乐老师:354331153
客服热线:
19941464235/19906632509(微信同号)

客服微信

【PostgreSQL】pg触发器介绍

作者:炎燚小宝
发布时间:2024-05-10 09:34
浏览量:83

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



触发器是在对指定表执行指定更改操作(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 更改其值。这意味着您可以使用触发器来修改要插入到新行或用于更新行的值。



想了解更多Oracle相关的学习资料(技术文章和视频),可以微信公众号或B站搜索《云贝教育》,免费获取。

想了解更多Oracle相关的学习资料(技术文章和视频),可以微信公众号或B站搜索《云贝教育》,免费获取。

想了解更多Oracle相关的学习资料(技术文章和视频),可以微信公众号或B站搜索《云贝教育》,免费获取。


另外需要学习资料 的同学,可以添加联系方式:(同V) 陈老师 199-4146-4235 / 郑老师 199-0663-2509 / 蕾老师199-0851-2933,我们会持续更新学习视频。