首页 > 其他分享 >MogDB/opengauss触发器简介(1)

MogDB/opengauss触发器简介(1)

时间:2024-03-26 11:44:54浏览次数:29  
标签:语句 触发 触发器 CREATE AFTER MogDB TRIGGER opengauss

MogDB/opengauss 触发器简介(1)
触发器是对应用动作的响应机制,当应用对一个对象发起 DML 操作时,就会产生一个触发事件(Event)。如果该对象上拥有该事件对应的触发器,那么就会检查触发器的触发条件(Condition)是否满足,如果满足触发条件,那么就会执行触发动作(Action)。

事件:触发器的触发事件,当对一个对象执行 UPDATE/DELETE/INSERT 等操作的时候,会激活触发器检查触发条件。

条件:触发条件可以是一个表达式或者是一个 SQL 查询语句,当触发条件的执行结果是 FALSE、NULL 或者空集的时候,代表触发条件不满足,触发器不会被触发。

动作:触发动作和存储过程相似,它的执行结合了触发器本身的特点,比如可以直接使用触发条件中的执行结果,或者是执行事件修改的元组中的值。

通过 CREATE TRIGGER 命令可以创建一个触发器,在 CREATE TRIGGER 命令中可以指定触发器的事件、条件和动作。

创建触发器具体语句如下:

CREATE [ CONSTRAINT ] TRIGGER trigger_name { BEFORE | AFTER | INSTEAD OF } { event [ OR '...'] }
ON table_name
[ FROM referenced_table_name ]
{ NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }
[ FOR [ EACH ] { ROW | STATEMENT } ]
[ WHEN ( condition ) ]
EXECUTE PROCEDURE function_name ( arguments );
触发事件满足时,还需要考虑触发器的执行时机,触发器语法中提供了两个触发时机:BEFORE 和 AFTER。顾名思义,BEFORE 就是在触发器事件执行之前检查触 发条件以及执行触发动作,而 AFTER 则是在触发事件之后检查触发条件以及执行触发动作。

在 UPDATE 事件发生之前执行触发器,具体语句如下:

CREATE TRIGGER before_update
BEFORE UPDATE
ON ...
在 INSERT 事件发生之后执行触发器,具体语句如下:

CREATE TRIGGER after_insert
AFTER INSERT
ON ...
触发器可以对应到元组(一个 SQL 语句可以更新多个元组),也可以对应到 SQL 语句级,默认是 SQL 语句级。

针对 SQL 语句级的触发器,具体语句如下:

CREATE TRIGGER after_insert
AFTER INSERT
ON warehouse
FOR EACH STATEMENT
...
针对元组级的触发器,具体语句如下:

CREATE TRIGGER after_insert
AFTER INSERT
ON warehouse
FOR EACH ROW
...

标签:语句,触发,触发器,CREATE,AFTER,MogDB,TRIGGER,opengauss
From: https://www.cnblogs.com/helloopenGauss/p/18096297

相关文章

  • MogDB/openGauss 3.0 扩容及缩容
    MogDB/openGauss3.0扩容及缩容本文出处:https://www.modb.pro/db/452139一、概述背景信息gs_expansion工具对数据库的备机进行扩容,支持从单机或者一主多备最多扩容到一主八备,本文从一主一备扩容到一主两备。gs_dropnode工具从一主多备的数据库中移除不需要的备机,最多可以......
  • openGauss社区入门(openGauss-常用数据类型)
    常用数据类型数据类型 说明布尔类型 booleantrue/'1'/'yes'false/'0'/'no'数值类型 smallint两字节int4字节bigint8字节double/real浮点型money货币(两位小数||字符类型|varchar(n几位数)/char/text||二进制|bytea||位串类型|一串0、1bit(n)/bit......
  • MogDB/openGauss 3.0 扩容及缩容
    MogDB/openGauss3.0扩容及缩容本文出处:https://www.modb.pro/db/452139一、概述背景信息gs_expansion工具对数据库的备机进行扩容,支持从单机或者一主多备最多扩容到一主八备,本文从一主一备扩容到一主两备。gs_dropnode工具从一主多备的数据库中移除不需要的备机,最多可以......
  • MogDB/openGauss访问控制简介
    MogDB/openGauss访问控制简介SQL可以针对不同的数据库对象赋予不同的权限,这样就可以限制用户对数据的不必要访问,提高数据访问的安全性。常见的SQL权限如下:SELECT/UPDATE/DELETE/INSERT:访问、修改基本表或视图的权限REFERENCES:在基本表上创建外键约束的权限TRIGGER:在基本表......
  • openGauss/MogDB 学习笔记之 -- PITR恢复
    openGauss/MogDB学习笔记之--PITR恢复概念描述背景信息当数据库崩溃或希望回退到数据库之前的某一状态时,MogDB的即时恢复功能(Point-In-TimeRecovery,简称PITR)可以支持恢复到备份归档数据之后的任意时间点。说明PITR仅支持恢复到物理备份数据之后的某一时间点。仅主节......
  • openGauss Cluster Manager RTO Test
    一、环境介绍软件环境类别 版本 下载链接 备注OS openEuler20.03(LTS) https://repo.openeuler.org/openEuler-20.03-LTS/ISO/aarch64/openEuler-20.03-LTS-aarch64-dvd.iso 操作系统BenchmarkSQL 5.0 https://sourceforge.net/projects/benchmarksql/files/latest/downloa......
  • 数据库---触发器
    继续接上一讲,今天梳理一下数据库中的触发器的相关知识点。一、触发器的概念1.1触发器是什么?触发器是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。关键词:自动触发。1.2为......
  • opengauss-jdbc问题整理
    opengauss-jdbc问题整理(更新中)问题1jdbc批量执行insert语句时返回结果不符合Springjpa预期问题描述:jdbc执行查询时,可以使用preparestatment.executeBatch()方法批量执行一组sql语句,该方法返回为int[]int型数组变量,含义是批量执行的每个sql语句更新的数据行数。......
  • 使用Python-psycopg访问postgres、openGauss、MogDB
    摘要Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL、GaussDB数据库提供统一访问接口,应用程序可基于它进行数据操作。Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全。它具有客户端游标和服务器端游标、异步通信和通知、支持“COPYTO/COPYFROM”......
  • openGauss资源池化开发者入门指南(二)
    openGauss资源池化开发者入门指南(二)一、内容简介openGauss资源池化是openGauss推出的一种新型的集群架构.通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的.本......