创建Trigger

Step1:使用CREATE FUNCTION命令创建一个Trigger函数。

Step2:使用CREATE TRIGGER命令将Trigger函数固定到一个表中。

创建Trigger函数

语法

CREATE FUNCTION trigger_function()   RETURNS TRIGGER   LANGUAGE PLPGSQL
AS $$
BEGIN  -- 执行逻辑
END;
$$

Trigger函数说明

在触发事件之前或之后,OLD 和 NEW表示表中行的状态。即OLD表示触发事件前的内容,NEW表示触发事件后行的状态

PostgreSQL还允许我们使用其他以TG_ 开头的局部变量,例如TG_WHENTG_TABLE_NAME。

如果我们指定一个Trigger函数,我们可以修复各种Trigger事件,例如,INSERT、DELETE和Update。

使用示例

CREATE OR REPLACE FUNCTION log_First_name_changes()  RETURNS TRIGGER   LANGUAGE PLPGSQL  AS
$$
BEGIN  IF NEW.First_name <> OLD.First_name THEN  INSERT INTO Client_audits(Client_id,First_name,changed_on)  VALUES(OLD.ID,OLD.First_name,now());  END IF;
RETURN NEW;
END;
$$

CREATE TRIGGER命令将Trigger函数固定到一个表中

语法

CREATE TRIGGER trigger_name   
 {BEFORE | AFTER} { event }  
  ON table_name  
  [FOR [EACH] { ROW | STATEMENT }]  
  EXECUTE PROCEDURE trigger_function

参数说明

  1. Trigger_name:Trigger名称
  2. BEFORE\    AFTER:Trigger执行的时间时
  3. Event:请求Trigger的事件,它可以是INSERT、UPDATE、DELETE 或 TRUNCATE。
  4. Table_name:定义与Trigger链接的表名
  5. [FOR [EACH] { ROW \    STATEMENT}]:定义Trigger的类型,即行级Trigger和语句级Trigger。该FOR EACH ROW子句用于定义行级Trigger。和FOR EACH STATEMENT子句用于指定语句级Trigger。
  6. Trigger_function:Trigger函数名称

注意:语句级Trigger用于实现每个事务,而行级Trigger用于为每一行执行。

例如,假设一个表有 50 行和两个Trigger,当DELETE事件发生时将执行这些Trigger。

如果删除命令删除了 50 行,则行级Trigger将执行 50 次,每删除一行执行一次。但是,无论删除多少行,语句级Trigger都会执行一次。

使用示例

CREATE TRIGGER First_name_changes  
 BEFORE UPDATE  
 ON Clients  
 FOR EACH ROW  
 EXECUTE PROCEDURE log_First_name_changes();

PostgreSQL trigger相关推荐

  1. PostgreSQL — 基于 Recovery 流复制的数据备份

    目录 文章目录 目录 Recovery 流复制 主库上操作 备库上操作 功能测试 相关配置参数 归档恢复 恢复目标 备份服务器 PostgreSQL 12 的 Recovery pg_baseback ...

  2. postgresql主从备份_PostgreSQL主从流复制与手动主备切换架构

    导读 使用PostgreSQL 11.3 创建两个节点:node1 和 node2: 配置主从流复制,然后做手动切换(failover).为了配置过程简单,两个节点在同一台物理机器上. 首先建立主从同 ...

  3. postgresql 高可用 etcd + patroni 之二 patroni

    os: centos 7.4 postgresql: 9.6.9 etcd: 3.2.18 patroni: 1.4.4 patroni + etcd 是在一个postgrsql 开源大会上 亚信的一 ...

  4. PostgreSQL的streaming replication

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL集群方案相关索引页     回到顶级页面:PostgreSQL索引页 [作者 高健@博客园  luckyjackgao@ ...

  5. pg_basebackup 配置 stream replication 异步/同步

    os :oel 6.8 postgresql: 9.6.3 PostgreSQL9.0 standby数据库在应用WAL日志的同时,也可以提供只读服务, 这是PostgreSQL9.0中最激动人心的功 ...

  6. 环境复制_PostgreSQL热备之流复制环境搭建以及常见问题处理

    [简介] 本文主要是介绍PostgreSQL数据库的热备技术,PostgreSQL数据库提供了类似Oracle的standby数据库的功能.PostgreSQL日志传送的方法有两种,一种是基于文件(b ...

  7. recovery.conf 用于 stream replication

    recovery.conf 是 postgresql slave 数据库的重要文件,示例文件为. $ ls -l $PGHOME/share/recovery.conf.sample 可以编辑 $PG ...

  8. PG: Setting up streaming log replication (Hot Standby )

    Postgresql9.0的一个主要新特性是可以实施流复制,这有点像ORACLE 里的DataGuard(Physial Standby) 但是这种方式比Oracle的DataGuard更为安全,更为 ...

  9. pg_rewind 快速角色切换

    os: ubuntu 16.04 postgresql: 9.6.8 pg_rewind是用于在集簇的时间线分叉以后,同步一个 PostgreSQL 集簇和同一集簇的另一份拷贝的工具.一种典型的场景是 ...

最新文章

  1. Docker 快速上手学习入门教程
  2. mysql开启binlog
  3. 数据降维与可视化——t-SNE
  4. GraphPad Prism 9.1 for Win / Mac 下载安装及使用教程
  5. linux系统实用脚本,常用linux系统命令及简单小脚本
  6. 以GIS面对崛起的城市群
  7. python爬取小说内容_使用python爬取小说全部内容
  8. 查询数据库最大id加1
  9. java实现获取中国大学名称列表、即所在省份
  10. 个别海康摄像机通过国标GB28181接入EasyCVR,视频无法打开的解决办法
  11. win10删除文件夹提示需要管理员权限的解决办法
  12. proposal中文翻译_PROPOSAL 是什么意思_ PROPOSAL 的翻译_音标_读音_用法_例句_爱词霸在线词典...
  13. 核心竞争力和壁垒 | 讲概念
  14. 杭州电子科技大学ACM-1094
  15. 2011年计算机类会议汇总
  16. error:尝试引用已删除的函数或已显式删除函数
  17. ancestral 箭头符号,英文字典
  18. Backblaze2022中期SSD故障质量报告解读
  19. 这个AI算法,可以帮“元宇宙”虚拟人进行虚拟更换衣服
  20. GNS3 安装图解 简单易学 多操作几遍就能记住

热门文章

  1. 压力眼这一Part,久等啦!
  2. 电商平台如何提高网站安全性
  3. CXXNET 安装教程
  4. GIF动态图怎么制作?试试这些简单方便的制作方法
  5. python计算圆周率
  6. 用facenet源码进行人脸识别测试过程中的一些问题
  7. Coding and Paper Letter(二十八)
  8. WebGIS学习教程资源
  9. H5网页语音实时播报功能的实现
  10. python dataframe增加一行_python - 在pandas.DataFrame中添加一行