Trigger Before 与 After 区别
用户在使用trigger时,经常会面临before or after的选择问题。二者有什么区别?从字面理解,before trigger 是在触发操作完成之前完成,而after 是在触发操作完成之后完成。显然,before触发器(针对insert和update操作)可以修改NEW的值。如果需要修改NEW值的时候,就使用before,其余场景一律使用after。
一、例子:所有trigger都可取到OLD 和 NEW值
create table t1(id integer,name varchar);
create table t2(id integer,name varchar); create or replace trigger test_tri_before
before update on t1 for each row
begin
raise notice 'before trigger, old value %, new value %' , coalesce(OLD.id,0) , coalesce(NEW.id,0);
end;
/ create or replace trigger test_tri_after
after update on t1 for each row
begin
raise notice 'after trigger, old value %, new value %' , coalesce(OLD.id,0) , coalesce(NEW.id,0);
end;
/ test=# update t1 set id=2 where id=1;
NOTICE: before trigger, old value 1, new value 2
NOTICE: after trigger, old value 1, new value 2
UPDATE 1
test=#
测试结果:不管是before or after,都可以取得 old and new 值。
二、例子:before可以修改 new值
create or replace trigger test_tri_before
before insert on t1 for each row
begin
if NEW.name = 'a' then
NEW.name = 'b';
end if;
end;
/ test=# insert into t1 values(1,'a');
INSERT 0 1
test=# select * from t1;
id | name
----+------
1 | b
(1 row)
可以看到,在insert 之前,将name 值修改为 ‘b’
三、例子:暂不支持自治事务
CREATE OR REPLACE FUNCTION test_tri_pragma RETURNS trigger
AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert into t2 values(NEW.id,NEW.name);
commit;
END
/ create trigger test_tri_pragma before insert on t1 for each row execute procedure test_tri_pragma(); test=# insert into t1 values(1,'a');
ERROR: invalid transaction termination
CONTEXT: PL/SQL function test_tri_pragma() line 5 at COMMIT
KingbaseES 目前只对 procedure 和 function 支持自治事务,对于trigger 暂不支持,后续应该会支持自治事务。
Trigger Before 与 After 区别的更多相关文章
- trigger和triggerhandler的区别
1. trigger会触发默认行为2. trigger会触发所有元素的模拟事件,而triggerHandler只触发一次3. trigger可以链式操作,triggerHandler不能4. trig ...
- jQuery triger与trigerHandler的区别
trigger(event, [data]) 与 triggerHandler(event, [data]) 都是用于触发一个事件. 其两者的区别在于,如果触发的事件是有浏览器默认行为的,trigge ...
- FireFox下上传控件的显示问题
Chrome正常 FireFox显示不正常 上传控件一直有个问题,就是样式问题,解决方法就是用一个大的背景层挡住,然后点大的背景层去触发上传控件的Click事件. Html: <span id= ...
- jquery远程班备忘
基础第一课: 1. $(obj)获取的是一个集合,因此length最小是1, jquery,如果元素不存在,也不会报错,可通过$(obj).length<1就可以查看该元素是否存在. 2. at ...
- 编码器芯片MLX90363的使用
文档资料 MLX90363 Datasheet MLX90363 Application Note 使用 对于编码器来说,Rotary Application模式 SPI驱动中,CS必须在8个字节都发 ...
- 【持续更新】JavaScript常见面试题整理
[重点提前说]这篇博客里的问题涉及到了了JS中常见的的基础知识点,也是面试中常见的一些问题,建议初入职场的园友Mark收藏,本文会持续更新~ 1. 引入JS的三种方式 1.在HTML标签中直接使用,直 ...
- Jquery的方法(二)
一.文档操作1.html()和text()的区别 <div id="J_div"><b><i>我是谁</i></b>&l ...
- jQuery的event事件
1.冒泡和默认行为 <div class="aa"> <div class="bb"> <div class="cc&q ...
- Unity面试问题归总
Unity面试问题归总 C#中Struct和Class的区别 Struct是Class的一种 A*寻路 https://blog.csdn.net/windcao/article/details/15 ...
随机推荐
- Linux安装Anaconda3完整教程
Linux安装Anaconda3完整教程 欢迎关注H寻梦人公众号 相关链接 官方安装Anaconda3教程 [手把手教你]如何在Linux系统搭建jupyter notebook CentOS8.2安 ...
- key可重复的Map
在正常的map操作中,key是不能重复的,如果希望key的内容可以重复,可以用IdentityHashMap 举个栗子 输出结果: public static void main(String[] a ...
- 查询效率提升10倍!3种优化方案,帮你解决MySQL深分页问题
开发经常遇到分页查询的需求,但是当翻页过多的时候,就会产生深分页,导致查询效率急剧下降. 有没有什么办法,能解决深分页的问题呢? 本文总结了三种优化方案,查询效率直接提升10倍,一起学习一下. 1. ...
- tauri+vue开发小巧的跨OS桌面应用-股票体检
最近打算写一个用于股票体检的软件,比如股权质押比过高的股票不合格,ROE小于10的股票不合格,PE大于80的股票不合格等等等等,就像给人做体检一样给股票做个体检.也实现了一些按照技术指标.基本面自动选 ...
- Web开发小妙招:巧用ThreadLocal规避层层传值
摘要:我们可以在处理每次请求的过程中,无需从Controller以及Service中的方法层层传值,只需要直接通过该局部变量取值即可. 本文分享自华为云社区<拦截器中巧用ThreadLocal规 ...
- 虚拟机安装Centos7.5详细教程
VMware15.5虚拟机安装CentOS7.5详细教程 (前言)软件下载 需要VMware15.5软件和密匙的小伙伴可以从此地址下载:https://pan.baidu.com/s/1A8H ...
- 意想不到的Python ttkbootstrap 制作账户注册信息界面
嗨害大家好,我是小熊猫 今天给大家来整一个旧活~ 前言 ttkbootstrap 是一个基于 tkinter 的界面美化库,使用这个工具可以开发出类似前端 bootstrap 风格的tkinter 桌 ...
- 水电表/压力表/传感器/流量计/行车记录仪/分贝仪等 超低功耗LCD段码液晶驱动IC-VKL076(VKL系列)SSOP28 19*4COM,工作电流约7.5微安
产品品牌:永嘉微电/VINKA 产品型号:VKL076 封装形式:SSOP28 产品年份:新年份 概述: VKL076 SSOP28是一个点阵式存储映射的LCD驱动器,可支持最大76点(19SEGx4 ...
- 使用云服务器从0开始搭建云端Jupyter Lab|Notebook
0.购买云服务器 购买服务器我只推荐硅云,因为香港服务器免备案!而且25岁以下仅需10元每月,至少可买3年!每年享有多次原价续费机会,可补价升级配置. 硅云服务器首页:https://www.vpso ...
- 【原创】Python 二手车之家车辆档案数据爬虫
本文仅供学习交流使用,如侵立删! 二手车之家车辆档案数据爬虫 先上效果图 环境 win10 python3.9 lxml.retrying.requests 需求分析 需求: 主要是需要车辆详情页中车 ...