MySQL学习——INFORMATION_SCHEMA触发器表

TRIGGERS表提供了有关触发器的信息。要查看有关表触发器的信息,必须具有该表的TRIGGER权限。

TRIGGERS表包含以下列:

TRIGGER_CATALOG:触发器所属的目录名称。此值始终为def。

TRIGGER_SCHEMA:触发器所属的架构(数据库)名称。这个值将用于区分不同的数据库或架构中的触发器。

TRIGGER_NAME:触发器的名称。用于唯一标识触发器的名称。

EVENT_MANIPULATION:触发器事件。即触发器激活的关联表上的操作类型。可以是 INSERT(插入了一行)、DELETE(删除了一行)或 UPDATE(修改了一行)。

EVENT_OBJECT_CATALOG, EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE:这三个列一起描述了与触发器关联的表的位置和名称。EVENT_OBJECT_CATALOG的值总是 def,与 TRIGGER_CATALOG 类似,可能表示所有触发器关联的表都在同一个默认目录中。EVENT_OBJECT_SCHEMA的值是与触发器关联的表所在的架构(数据库)名称。EVENT_OBJECT_TABLE的值是与触发器关联的表的名称。

ACTION_ORDER:触发器操作在具有相同EVENT_MANIPULATIONaction_TIMING值的同一表上的触发器列表中的顺序位置。是在数据库系统中,当某个事件(如INSERT、UPDATE或DELETE)发生时,如果有多个触发器与该事件关联,并且这些触发器的激活时间和事件类型都相同,那么这些触发器将按照某种顺序执行。这个顺序可能由数据库系统根据触发器的创建时间、名称或其他因素自动确定,也可能由管理员明确指定。然而,在元数据中通常不会直接记录这个顺序的具体值,而是需要管理员或开发者通过其他方式(如查询系统文档或联系数据库供应商)来获取相关信息。

ACTION_CONDITION:此值始终为NULL。在某些数据库系统中,触发器可以具有一个条件,当事件发生时,只有在该条件为真时才会激活触发器。

ACTION_STATEMENT:触发器激活时执行的语句。这是触发器的主要部分,定义了当触发器被激活时要执行的SQL语句或语句块。这些语句可以是简单的单个语句,也可以是复杂的语句序列,具体取决于触发器的设计目的和需求。

ACTION_ORIENTATION:该值始终为ROW。触发器可以有两种定向:STATEMENT(语句级)和ROW(行级)。在STATEMENT级触发器中,触发器是针对整个SQL语句激活一次的;而在ROW级触发器中,触发器是针对受影响的每一行激活的。

ACTION_TIMING:触发器是在触发事件之前还是之后激活。这个列的值是BEFOREAFTER,表示触发器是在其关联的事件发生之前还是之后激活的。这允许开发者在数据修改之前或之后执行特定的操作,以满足特定的业务需求。

ACTION_REFERENCE_OLD_TABLE:这两个值始终为NULL。在某些数据库系统中,对于UPDATE和DELETE触发器,可以引用一个特殊的表来访问被修改或删除之前的行的数据(OLD表)或新插入的行的数据(NEW表)。

ACTION_REFERENCE_NEW_TABLE这个值通常是NULL,因为它不直接指向一个特定的表。触发器通常与特定的表相关联,但它们并不直接引用“新表”,因为它们是基于行上的变化(在特定的表上)来触发的。

ACTION_REFERENCE_OLD_ROW 和 ACTION_REFERENCE_NEW_ROW:用于标识触发器内部的引用。在触发器中,可以使用OLDNEW关键字来引用被修改或删除的行(对于BEFORE UPDATEBEFORE DELETE触发器)或新插入的行(对于AFTER INSERTBEFORE INSERT触发器)。ACTION_REFERENCE_OLD_ROW 的值始终是OLD,而 ACTION_REFERENCE_NEW_ROW 的值始终是NEW。它们只是表示这些关键字的文本值,而不是实际的数据。

CREATED:是一个时间戳,表示触发器创建的时间。对于MySQL 5.7.2及更高版本创建的触发器,它将包含具体的日期和时间(包括秒的小数部分)。对于早期版本创建的触发器,此值可能为NULL。

SQL_MODE:当触发器被创建时生效的SQL模式,以及触发器执行时所使用的SQL模式。SQL模式用于影响MySQL的SQL语法和验证。例如,STRICT_TRANS_TABLES模式会在插入或更新数据时检查数据是否满足表定义中的约束。

DEFINER:定义触发器时指定的账户。它通常是创建触发器的用户,但也可以显式地设置为其他用户。在触发器内部,DEFINER通常用于确定执行触发器的用户,这可以影响权限检查和其他与安全相关的操作。

CHARACTER_SET_CLIENT:当触发器被创建时,character_set_client系统变量的会话值。这个变量用于客户端发送到服务器的字符数据的字符集。

COLLATION_CONNECTION 和 DATABASE_COLLATION 是与MySQL触发器相关的两个属性,它们分别表示触发器创建时collation_connection系统变量的会话值和与触发器关联的数据库的排序规则(collation)。

COLLATION_CONNECTION:在触发器被创建时,collation_connection系统变量的会话值。collation_connection决定了客户端发送到服务器的字符串的字符集和排序规则。当触发器执行时,它可能会使用此排序规则来处理字符串数据。

 DATABASE_COLLATION:这个值是与触发器关联的数据库的排序规则。排序规则定义了数据库中字符串的排序和比较方式。如果触发器中使用了涉及字符串比较或排序的操作,那么它可能会受到这个排序规则的影响。 

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.TRIGGERSWHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='ins_sum'\G
*************************** 1. row ***************************TRIGGER_CATALOG: defTRIGGER_SCHEMA: testTRIGGER_NAME: ins_sumEVENT_MANIPULATION: INSERTEVENT_OBJECT_CATALOG: defEVENT_OBJECT_SCHEMA: testEVENT_OBJECT_TABLE: accountACTION_ORDER: 1ACTION_CONDITION: NULLACTION_STATEMENT: SET @sum = @sum + NEW.amountACTION_ORIENTATION: ROWACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULLACTION_REFERENCE_OLD_ROW: OLDACTION_REFERENCE_NEW_ROW: NEWCREATED: 2018-08-08 10:10:12.61SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONDEFINER: me@localhostCHARACTER_SET_CLIENT: utf8COLLATION_CONNECTION: utf8_general_ciDATABASE_COLLATION: latin1_swedish_ci

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/22757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工厂模式 使用全局变量自己注册

前言 使用工厂模式时,需要将类注册进工厂里,看到一种新的奇技淫巧,使用静态变量来将类注册进工厂。代码 Product.h #ifndef PRODUCT_H #define PRODUCT_Hclass Product { public:Product(){};virtual ~Product(){};virtual void doWork() …

38. 【Java教程】日期和时间处理

本小节我们将学习 Java 中的日期和时间,日期和时间在我们的实际开发中非常常用,例如用户的注册、数据的增删改、对敏感信息的操作等等都需要记录下日期和时间。通过本小节的学习,你将了解到什么是日期、什么是时间、什么是时区,Ja…

分享一个fpga任意分频的代码

分享一个fpga任意分频的代码,非50%占空比的分频代码, 这里以16以内 的分频为例 module clkdiv #(parameter div 4)(input clk,input rst,//input [3:0] div,output reg clk_div );//reg …

3072. 将元素分配到两个数组中 II

题目 给你一个下标从 1 开始、长度为 n 的整数数组 nums 。 现定义函数 greaterCount ,使得 greaterCount(arr, val) 返回数组 arr 中 严格大于 val 的元素数量。 你需要使用 n 次操作,将 nums 的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操…

Mysql间隙锁死锁避免最佳实践

最近写代码的时候听说,批量操作提高死锁的概率,但是心里又想,为什么没看到任何一款数据库相关的中间价禁止或者提醒批量操作?心里想肯定是因为一起其他操作的不当导致的死锁问题。进行了一些思考,希望可以帮助到大家 …

WebGL画粗线

目录 前言 基本思路 求左右端点 实现 组织数据 顶点着色器计算端点坐标 效果 前言 WebGL绘制模式有点、线、面三种;通过点的绘制可以实现粒子系统等,通过线可以绘制一些连线关系;面就强大了,通过面,我们可以…

视频监控汇聚平台LntonCVS国标GB28181协议实现语音对讲功能

在当今这个智能技术飞速发展的时代,人工智能已经成为了电子产品领域的一股不可忽视的热门趋势。随着科技的不断进步,越来越多的电子产品开始融入人工智能技术,从而为其开拓了全新的发展路径。在这个大背景下,安防摄像头无插件直播…

什么叫硬编码?如何避免硬编码

硬编码(Hardcoding或Hard-coding)是指在编写程序时,直接将具体的值(如字符串、数字、路径等)写入源代码中,而不是通过变量、配置文件、数据库查询或其他动态方法来获取这些值。这种方式虽然简单直接&#x…

基于springboot实现智慧校园之家长子系统项目【项目源码】计算机毕业设计

基于springboot实现智慧校园之家长子系统演示 SpringBoot框架介绍 本课题程序开发使用到的框架技术,英文名称缩写是SpringBoot,在JavaWeb开发中使用的流行框架有SSH、SpringBoot、SpringMVC等,作为一个课题程序采用SSH框架也可以&#xff0c…

microsoft office从c盘移动到d盘之后被损坏

千万不能移动!移动之后不管在D盘还是移回C盘都不能用了 解决办法: 打开控制面板的卸载程序,点击microsoft office的更改,再点击联机恢复就可以了

【学习】测试用例设计与执行的黄金法则

在软件测试领域,测试用例的设计与执行是确保产品质量的关键环节。一个优秀的测试用例能够揭示软件中的缺陷,而高效的执行则能保障测试覆盖的全面性。如同璀璨的星辰指引航船前行,以下黄金法则将引领测试用例设计与执行的过程,确保…

企业数据确权与数据知识产权的讨论

什么是数据知识产权? 数据知识产权是权利人对经过一定算法加工、具有实用价值和智力成果属性的数据,依法享有的专有权利,并指出进行交易的数据知识产权需要明确权属关系,以保证数据知识产权能够依法出让。 数据知识产权与数据资产…

Go 群发邮件Redis 实现邮件群发

一、安装 go get github.com/go-redis/redis/v8 go get gopkg.in/gomail.v2 二、使用"gopkg.in/gomail.v2"群发 package mainimport (gomail "gopkg.in/gomail.v2" )func main() {// 邮件内容m : gomail.NewMessage()m.SetHeader("From", &qu…

【杂谈】AIGC之Stable Diffusion:AI绘画的魔法

Stable Diffusion:AI绘画的魔法 引言 在AI的世界里,Stable Diffusion就像一位魔法师,它能够将我们脑海中的幻想,用画笔一一描绘出来。今天,就让我们一探这位魔法师的奥秘,看看它是如何从无到有&#xff0…

3.00002 postgresql如何初始化内存上下文,都初始化了哪些上下文?

文章目录 解决问题:PostgreSQL 7. 1 以前的版本在处理大量以指针传值的查询时一直存在着内存泄漏的问题,直到 查询结束才能将内存收回 。内存上下文-数据结构内存上下文-启动相关函数MemoryContextInitAllocSetContextCreate (宏,定义为:AllocSetContextCreateInternal (as…

Human Guided Ground-truth Generation for Realistic Image Super-resolution

香港理工大学&OPPO&哈工大 CVPR2023https://github.com/ChrisDud0257/HGGT 问题引入 现在通过模拟退化过程来从高分辨率图像生成低分辨率图像,但是该过程没有引入人类的感知;所以本文首先训练了多个超分模型,为一张LR生成多张对应的…

安装MongoDB单副本说明

参考:https://blog.csdn.net/weixin_43464076/article/details/126509254 https://driverzhang.github.io/post/mongo%E5%BC%80%E5%90%AF%E4%BA%8B%E5%8A%A1%E4%B9%8B%E5%89%AF%E6%9C%AC%E9%9B%86%E9%87%87%E5%9D%91/ https://dev.to/alexalvess/getting-started-wi…

【Javascript系统学习】

语法与数据类型 语法 var\let\const var 声明一个变量,可选初始化一个值。 let 声明一个块作用域的局部变量,可选初始化一个值。 const 声明一个块作用域的只读常量。 用 var 或 let 语句声明的变量,如果没有赋初始值,则其值为 …

实习面试题(答案自敲)、

1、为什么要重写equals方法,为什么重写了equals方法后,就必须重写hashcode方法,为什么要有hashcode方法,你能介绍一下hashcode方法吗? equals方法默认是比较内存地址;为了实现内容比较,我们需要…

mysql表级锁(表锁/元数据锁/意向锁)

文章目录 表级锁的分类1、表锁(分类)1.表共享读锁(read lock)2.表独占写锁(write lock)3.语法: 2、元数据锁(meta data lock )3、意向锁1.意向共享锁(IS):由语…