当前位置:网站首页>GBase 8c触发器(二)
GBase 8c触发器(二)
2022-07-03 02:18:00 【大壮十二】
在继承或分区层次结构中定位父表的语句不会导致受影响的子表的语句级触发器被触发; 只有父表的语句级触发器被触发。但是,任何受影响的子表的行级触发器都将被触发。
如果一个INSERT包含ON CONFLICT DO UPDATE子句并且引用了EXCLUDED列,有可能行级BEFORE INSERT触发器和行级BEFORE UPDATE触发器的效果可能会以一种对于 被更新行最终状态透明的方式被应用。不过,对于要执行的两种集合的行级BEFORE触发器都不需要有EXCLUDED列引用。当同时有行级BEFORE INSERT和BEFORE UPDATE触发器修改被插入/ 更新的行时(即使修改或多或少都具有同等效力,但如果它们也不是幂等的,这可能会有问题), 应该考虑可能出现的意料之外的结果。注意在指定了ON CONFLICT DO UPDATE时,不管有没有行被UPDATE影响(并且不管是否采用了其他UPDATE路径),语句级UPDATE都将被执行。一个带有ON CONFLICT DO UPDATE子句的INSERT将首先执行语句级BEFOREINSERT, 然后执行语句级BEFOREUPDATE触发器, 接着是语句级AFTERUPDATE触发器, 最后是语句级AFTERINSERT触发器。
被语句级触发器调用的触发器函数应该总是返回NULL。根据行级触发器的选择,被其调用的触发器函数可以返回一个表行(类型HeapTuple的一个值)给执行器。在一个操作前触发的行级触发器有下列选择:
- 它可以返回NULL来跳过对当前行的操作。这指示执行器不要执行调用触发器的行级操作(对一个特定表行的插入、修改或删除)。
- 仅对行级INSERT和UPDATE触发器来说,被返回的行称为将要被插入的行或者替代将被更新的行。这允许触发器函数修改将要被插入或更新的行。
一个无意导致任何这些行为的行级BEFORE触发器必须小心地它的结果,使之和被传入的行一样(即,INSERT和UPDATE触发器的NEW行,DELETE触发器的OLD行)。
一个行级INSTEAD OF触发器可以返回NULL来指示它没有修改任何来自于视图底层基表的数据,也可以返回被传入的视图行(INSERT和UPDATE操作的NEW行,或者DELETE操作的OLD行)。一个非空返回值被用于标志触发器在视图中执行了必须的数据修改。这将会导致被命令修改的行计数被增加。对于INSERT和UPDATE操作,触发器可能会在返回NEW行之前对其进行修改。这将会改变INSERT RETURNING或UPDATE RETURNING返回的数据,并在视图无法正确地显示提供给它的相同数据时有用。
对于在一个操作之后触发的行级触发器,返回值会被忽略,因此它们可以返回NULL。
如果为同一个关系上的同一事件定义了超过一个触发器,它们将按照其名称的字母表顺序被触发。在BEFORE和INSTEAD OF触发器的情况下,每一个触发器返回的可能被修改的行将成为下一个触发器的输入。如果任何一个BEFORE或INSTEAD OF触发器返回NULL,该操作将在该行上被禁用并且对于该行不会触发后续的触发器。
边栏推荐
- Solution for processing overtime orders (Overtime unpaid)
- 机器学习流程与方法
- easyExcel
- [Yu Yue education] Jiujiang University material analysis and testing technology reference
- My creation anniversary
- Restcloud ETL cross database data aggregation operation
- 【教程】chrome关闭跨域策略cors、samesite,跨域带上cookie
- Detailed introduction to the usage of Nacos configuration center
- Internal connection query and external connection
- CFdiv2-Fixed Point Guessing-(区间答案二分)
猜你喜欢
Redis: simple use of redis
Detailed analysis of micro service component sentinel (hystrix)
Comment communiquer avec Huawei Cloud IOT via le Protocole mqtt
基于线程池的生产者消费者模型(含阻塞队列)
Deep learning notes (constantly updating...)
awk从入门到入土(0)awk概述
Machine learning notes (constantly updating...)
oauth2.0鉴权,登录访问 “/oauth/token”,请求头Authorization(basicToken)如何取值???
Servlet中数据传到JSP页面使用el表达式${}无法显示问题
[Flutter] dart: class;abstract class;factory;类、抽象类、工厂构造函数
随机推荐
【教程】chrome關閉跨域策略cors、samesite,跨域帶上cookie
微服务组件Sentinel (Hystrix)详细分析
单词单词单词
easyExcel
Kotlin middle process understanding and Practice (II)
stm32F407-------DMA
5.文件操作
力扣(LeetCode)183. 从不订购的客户(2022.07.02)
Comment communiquer avec Huawei Cloud IOT via le Protocole mqtt
机器学习流程与方法
Codeforces Round #418 (Div. 2) D. An overnight dance in discotheque
SPI机制
GBase 8c 函数/存储过程参数(二)
Thread safe singleton mode
基于线程池的生产者消费者模型(含阻塞队列)
The Sandbox阐释对元宇宙平台的愿景
CFdiv2-Fixed Point Guessing-(区间答案二分)
GBase 8c系统表-pg_am
Word word word
Missing library while loading shared libraries: libisl so. 15: cannot open shared object file: No such file