当前位置:网站首页>GBase 8c 触发器(一)
GBase 8c 触发器(一)
2022-07-03 02:18:00 【大壮十二】
触发器函数可以使用大部分可用过程性语言,包括PL/pgSQL、PL/Tcl、PL/Perl和PL/Python。触发器是数据库提供给程序员和数据分析员来保证数据完整性的一种机制,它是一种与数据表事件相关的特殊的存储过程。触发器的执行不是由程序调用,也不需要手工开启,而是由数据表上的事件来触发,当用户对一个数据表进行增、删、改操作时就会激活它执行。
一个触发器声明了当执行一种特定类型的操作时数据库应该自动执行一个特殊的函数。触发器可以被附加到表(分区或不分区)、视图和外部表。
在表和外部表上,触发器可以被定义为在INSERT、UPDATE或DELETE操作之前或之后被执行, 可以为每个SQL语句被执行一次或者为每个修改的行被执行一次。UPDATE触发器可以进一步地设置为只针对UPDATE语句的SET子句的特定列出发。触发器也可以被TRUNCATE语句触发。如果一个触发器事件发生,触发器函数会在适当的事件被调用来处理该事件。
在视图上,触发器可以被定义来取代INSERT、UPDATE或DELETE操作的执行。INSTEAD OF触发器对视图中需要被修改的每一行触发一次。触发器函数的职责是对底层的基本表执行必要的修改,并且在合适的时候返回被修改的行以便显示在视图中。视图上的触发器也可以被定义为对每个SQL语句执行一次,在INSERT\UPDATE或DELETE操作之前或之后。
触发器函数必须在触发器本身被创建之前被定义好。触发器函数必须被定义成一个没有参数的函数,并且返回类型为trigger(触发器函数通过一个特殊传递的TriggerData结构作为其输入,而不是以普通函数参数的形式)。
一旦一个合适的触发器函数被创建,就可以使用CREATE TRIGGER建立触发器。同一个触发器函数可以被用于多个触发器。
GBase 8c同时提供每行的触发器和每语句的触发器。对于一个每行的触发器,对于触发触发器的语句所修改的每一行都会调用一次触发器函数。相反,一个每语句的触发器对于其触发语句只被调用一次,而不管该语句影响了多少行。特别地,一个不影响任何行的语句仍然会导致任何可用每语句的触发器的执行。这两类触发器有时也分别被称作行级触发器和语句级触发器。TRUNCATE上的触发器只能定义在语句级,而不是每行定义。
触发器也可以根据它们是否在操作之前、之后触发, 或者被触发来取代操作来分类。它们分别指BEFORE触发器、AFTER触发器以及INSTEAD OF触发器。语句级BEFORE触发器在语句开始做任何事情之前被触发,而语句级AFTER触发器则在语句做完所有事情之后被触发。 这些触发器类型可以被定义在表、视图或外部表上。行级BEFORE触发器在每一个行被操作之前被触发, 而行级AFTER触发器在语句结束之后被触发(但在任何语句级AFTER触发器之前)。 这些触发器类型只能被定义在非分区表和外部表上,不能定义在视图上。INSTEAD OF触发器只能被定义在视图上,并且只能定义为行级; 它们立刻为视图中每一个被标识为需要被操作的行触发。
边栏推荐
- Leetcode(540)——有序数组中的单一元素
- Qt之QComboBox添加QCheckBox(下拉列表框插入复选框,含源码+注释)
- 苏世民:25条工作和生活原则
- Solution for processing overtime orders (Overtime unpaid)
- Tongda OA V12 process center
- 使用Go语言实现try{}catch{}finally
- Recommendation letter of "listing situation" -- courage is the most valuable
- Socket programming
- Return a tree structure data
- stm32F407-------ADC
猜你喜欢

PyTorch 卷积网络正则化 DropBlock

Job object of collaboration in kotlin
![[shutter] bottom navigation bar implementation (bottomnavigationbar bottom navigation bar | bottomnavigationbaritem navigation bar entry | pageview)](/img/41/2413af283e8f1db5d20ea845527175.gif)
[shutter] bottom navigation bar implementation (bottomnavigationbar bottom navigation bar | bottomnavigationbaritem navigation bar entry | pageview)
![[Flutter] dart: class;abstract class;factory;类、抽象类、工厂构造函数](/img/06/ab333a4752de27eae2dd937cf579e2.png)
[Flutter] dart: class;abstract class;factory;类、抽象类、工厂构造函数

Y54. Chapter III kubernetes from introduction to mastery -- ingress (27)

8 free, HD, copyright free video material download websites are recommended

Hard core observation 547 large neural network may be beginning to become aware?

stm32F407-------DMA

How do it students find short-term internships? Which is better, short-term internship or long-term internship?

What are the key points often asked in the redis interview
随机推荐
stm32F407-------DMA
Thread safe singleton mode
Flink CDC mongoDB 使用及Flink sql解析monggo中复杂嵌套JSON数据实现
【教程】chrome关闭跨域策略cors、samesite,跨域带上cookie
The sandbox explains its vision for the meta universe platform
Introduce in detail how to communicate with Huawei cloud IOT through mqtt protocol
可視化yolov5格式數據集(labelme json文件)
stm32F407-------IIC通讯协议
Hard core observation 547 large neural network may be beginning to become aware?
awk从入门到入土(2)认识awk内置变量和变量的使用
Deep learning notes (constantly updating...)
Visual yolov5 format data set (labelme JSON file)
Visualisation de l'ensemble de données au format yolov5 (fichier labelme json)
[shutter] shutter debugging (debugging control related functions | breakpoint management | code operation control)
Prohibited package name
【教程】chrome關閉跨域策略cors、samesite,跨域帶上cookie
COM和CN
5.文件操作
Face recognition 6-face_ recognition_ Py based on OpenCV, face detection and real-time tracking using Haar cascade and Dlib Library
GBase 8c 函数/存储过程定义