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

...

MogDB/opengauss触发器简介(1)的更多相关文章

  1. Mogdb / opengauss 用户密码错误,用户被锁

    # 问题概述xxx客户新上一套opengauss数据库,在测试中程序里用户的密码配置错误,导致用户被锁# 解决方案1.跟oracle 语法一样alter user xxx account unlock ...

  2. PL/SQL 触发器简介

    与公司同事交流了一下,得知触发器很少用.性能是一方面,主要是如果用太多触发器,可能到时你都不知道会有什么操作自动发生. 有些操作可以在程序中控制.例如在插入某个表时,写个log表的记录.这可以用触发器 ...

  3. SQLServer之触发器简介

    触发器定义 触发器是数据库服务器中发生事件时自动执行的一种特殊存储过程.SQLServer允许为任何特定语句创建多个触发器.它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对数据库进行操作 ...

  4. MySql触发器简介

    MySQL 数据库中触发器是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不需要使用 CALL 语句来调用,也不需要手工启动,只要一个预定义的事件发生就会被 My ...

  5. oracle 触发器学习

    触发器使用教程和命名规范 目  录触发器使用教程和命名规范 11,触发器简介 12,触发器示例 23,触发器语法和功能 34,例一:行级触发器之一 45,例二:行级触发器之二 46,例三:INSTEA ...

  6. Oracle触发器实例(网搜)

    触发器使用教程和命名规范 目  录触发器使用教程和命名规范 11,触发器简介 12,触发器示例 23,触发器语法和功能 34,例一:行级触发器之一 45,例二:行级触发器之二 46,例三:INSTEA ...

  7. 二十九、oracle 触发器

    一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行.因此触发器不需要人为的去调用,也不能调用.然后,触发器的触发条件其实在你定义的时候就已经设定好了.这里面需 ...

  8. oracle触发器 调用 web接口

    最近要求开发当数据表发生变化的时候调用web接口的需求,上网找了好几篇文章看着都觉得不是很好,也根据别人的思路去实现了下,感觉都不太理想,最后使用URLConnection实现了调用.具体查看一下代码 ...

  9. mssql instead of 触发器应用一-创建只读视图(view)的方法

    转自: http://www.maomao365.com/?p=4906 <span style="color:white;background-color:blue;font-wei ...

  10. DML_DDL_触发器

    Oracle触发器1-介绍Oracle官方参考:PL/SQL Language Referenc->9 PL/SQL TriggerReasons to Use Trigger:■ Automa ...

随机推荐

  1. 【Azure 应用服务】App Servie网站报403 ModSecurity Action错误

    问题描述 App Service 部署应用程序,然后通过App Gateway(WAF) 提供公网访问,但是一直遇见403报错,刷新页面,回退,重新Web页面能缓解403问题. 问题分析 通过浏览器F ...

  2. 按值传递,引用传递 浅析java String ,对象与对象引用的区别

    目录 一.前言 二.何谓对象? 三.何谓对象引用? 四.创建对象 Vehicle veh1 = new Vehicle(); 五.参数传值 六.Java Sting 最后!有错误的地方欢迎指正 一.前 ...

  3. HW学习笔记

    栈库分离方法注意事项: 所有用户输入数据需要进行分离过滤,不能遗漏.选择安全的过滤函数 如 mysql_real_escape_string(),避免过滤不严格导致注入 SQL查询模板需要设计安全,米 ...

  4. Java面向对象(下)--static/final/代码块/抽象/接口/内部类

    目录 1 关键字:static 2 理解main方法的语法 3 类的成员之四:代码块 4关键字:final 5 抽象类与抽象方法 6 接口(interface) 7 类的成员之五:内部类 static ...

  5. mikumikudance 和 pmxEditor 都可以打开 pmx

    mikumikudance 和 pmxEditor 都可以打开 pmx 模型下载 https://www.bilibili.com/blackboard/activity-5hkwDIRkBv.htm ...

  6. https://pengchenggang.github.io/vuejsdev-com-github 备份发布

    https://pengchenggang.github.io/vuejsdev-com-github 备份发布 现在还没有解决的就是 开clash,代码提交不上去,只能关了提,但是关了提交,也得赶运 ...

  7. ContextMenuManager右键z 右键菜单

    常用软件 下载 https://files.cnblogs.com/files/pengchenggang/ContextMenuManager右键z-右键菜单.rar?t=1664158084

  8. private priv 私人 pri=prim first v=self 自己第一

    private priv 私人 pri=prim first v=self 自己第一 private v自己-私人的 pri 来自PIE*per,向前,穿过 pri = pre 向前(这么理解也说的过 ...

  9. Python Numpy 中的打印设置函数set_printoptions

    一 概述 np.set_printoptions()用于控制Python中小数的显示精度. 二 解析 np.set_printoptions(precision=None, threshold=Non ...

  10. 在salesforce中如何获取Security Token

    Trailhead练习Soap API使用Soap UI时,需要Security Token才能登录,在Lightning一直找不到,后来切换到Classic才找到.现在提供一个简单粗暴的方式,快速定 ...