【PostgreSQL】pg触发器介绍

news/2024/9/24 6:21:51/

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

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


http://www.ppmy.cn/news/1444863.html

相关文章

Node.js 的 fs 模块分析及其应用

fs 模块,作为 Node.js 平台中的一个核心组件,主要负责处理文件系统相关的操作。该模块提供了一系列用于文件管理的功能,例如文件的读取、写入、更新以及删除等。 应用场景分析 fs 模块的应用范围广泛,下面是一些典型的使用实例&…

【百度Apollo】探索自动驾驶:Apollo 新版本 Beta 全新的Dreamview+,便捷灵活更丰富

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引入一、Dreamview介绍二、Dreamview 新特性2.1、基于模式的多场景——流程更简洁地图视角调节:调试流…

【Leetcode每日一题】 综合练习 - 找出所有子集的异或总和再求和(难度⭐)(68)

1. 题目解析 题目链接:1863. 找出所有子集的异或总和再求和 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 算法思路与实现 为了求解给定整数数组的所有子集并将其异或和相加,我们可以采用递…

电子式汽车机油压力传感器的接线方法及特点

电子式机油压力传感器由厚膜压力传感器芯片、信号处理电路、外壳、固定电路板装置和两根引线(信号线和报警线)组成。信号处理电路由电源电路、传感器补偿电路、调零电路、电压放大电路、电流放大电路、滤波电路和报警电路组成。 厚膜压力传感器是20世纪…

Objective-C大爆炸:从零到单例模式

oc学习笔记(一) 文章目录 oc学习笔记(一)oc与c语言的区别#import的用法foundation框架NSLog函数NSString类型符号的作用oc中的数据类型 类与对象概念: 创建第一个类类的定义类的实现类加载对象的产生和使用 self语法id…

Python梯度提升决策树库之lightgbm使用详解

概要 LightGBM是一个快速、分布式、高性能的梯度提升决策树(Gradient Boosting Decision Tree)库,它在机器学习和数据挖掘领域被广泛应用。本文将介绍LightGBM库的安装方法、主要特性、基本功能、高级功能、以及在实际应用中的场景和总结。 安装 首先,需要安装LightGBM库…

# 使用 spring boot 时,@Autowired 注解 自动装配注入时,变量报红解决方法:

使用 spring boot 时,Autowired 注解 自动装配注入时,变量报红解决方法: 1、使用 Resource 代替 Autowired 注解,根据类型注入改为根据名称注入(建议)。 2、在 XXXMapper 上添加 Repository 注解&#xff0…

访学/博后/联培博士关注|不同国家的英语口音辨识度训练

在访问学者、博士后及联合培养的申请过程中,接收方多数都要求英文面试。如果导师的母语为非英语国家,将会带有口音,这样更增加了英语面试难度。如何提升不同国家的英语口音辨识度,使自己的英语表达更加流利,知识人网小…