PostgreSQL trigger
创建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_WHEN和TG_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
参数说明
- Trigger_name:Trigger名称
- BEFORE\ AFTER:Trigger执行的时间时
- Event:请求Trigger的事件,它可以是INSERT、UPDATE、DELETE 或 TRUNCATE。
- Table_name:定义与Trigger链接的表名
- [FOR [EACH] { ROW \ STATEMENT}]:定义Trigger的类型,即行级Trigger和语句级Trigger。该FOR EACH ROW子句用于定义行级Trigger。和FOR EACH STATEMENT子句用于指定语句级Trigger。
- 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相关推荐
- PostgreSQL — 基于 Recovery 流复制的数据备份
目录 文章目录 目录 Recovery 流复制 主库上操作 备库上操作 功能测试 相关配置参数 归档恢复 恢复目标 备份服务器 PostgreSQL 12 的 Recovery pg_baseback ...
- postgresql主从备份_PostgreSQL主从流复制与手动主备切换架构
导读 使用PostgreSQL 11.3 创建两个节点:node1 和 node2: 配置主从流复制,然后做手动切换(failover).为了配置过程简单,两个节点在同一台物理机器上. 首先建立主从同 ...
- postgresql 高可用 etcd + patroni 之二 patroni
os: centos 7.4 postgresql: 9.6.9 etcd: 3.2.18 patroni: 1.4.4 patroni + etcd 是在一个postgrsql 开源大会上 亚信的一 ...
- PostgreSQL的streaming replication
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL集群方案相关索引页 回到顶级页面:PostgreSQL索引页 [作者 高健@博客园 luckyjackgao@ ...
- pg_basebackup 配置 stream replication 异步/同步
os :oel 6.8 postgresql: 9.6.3 PostgreSQL9.0 standby数据库在应用WAL日志的同时,也可以提供只读服务, 这是PostgreSQL9.0中最激动人心的功 ...
- 环境复制_PostgreSQL热备之流复制环境搭建以及常见问题处理
[简介] 本文主要是介绍PostgreSQL数据库的热备技术,PostgreSQL数据库提供了类似Oracle的standby数据库的功能.PostgreSQL日志传送的方法有两种,一种是基于文件(b ...
- recovery.conf 用于 stream replication
recovery.conf 是 postgresql slave 数据库的重要文件,示例文件为. $ ls -l $PGHOME/share/recovery.conf.sample 可以编辑 $PG ...
- PG: Setting up streaming log replication (Hot Standby )
Postgresql9.0的一个主要新特性是可以实施流复制,这有点像ORACLE 里的DataGuard(Physial Standby) 但是这种方式比Oracle的DataGuard更为安全,更为 ...
- pg_rewind 快速角色切换
os: ubuntu 16.04 postgresql: 9.6.8 pg_rewind是用于在集簇的时间线分叉以后,同步一个 PostgreSQL 集簇和同一集簇的另一份拷贝的工具.一种典型的场景是 ...
最新文章
- Docker 快速上手学习入门教程
- mysql开启binlog
- 数据降维与可视化——t-SNE
- GraphPad Prism 9.1 for Win / Mac 下载安装及使用教程
- linux系统实用脚本,常用linux系统命令及简单小脚本
- 以GIS面对崛起的城市群
- python爬取小说内容_使用python爬取小说全部内容
- 查询数据库最大id加1
- java实现获取中国大学名称列表、即所在省份
- 个别海康摄像机通过国标GB28181接入EasyCVR,视频无法打开的解决办法
- win10删除文件夹提示需要管理员权限的解决办法
- proposal中文翻译_PROPOSAL 是什么意思_ PROPOSAL 的翻译_音标_读音_用法_例句_爱词霸在线词典...
- 核心竞争力和壁垒 | 讲概念
- 杭州电子科技大学ACM-1094
- 2011年计算机类会议汇总
- error:尝试引用已删除的函数或已显式删除函数
- ancestral 箭头符号,英文字典
- Backblaze2022中期SSD故障质量报告解读
- 这个AI算法,可以帮“元宇宙”虚拟人进行虚拟更换衣服
- GNS3 安装图解 简单易学 多操作几遍就能记住