我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL触发器了解一下

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL触发器了解一下

MySQL触发器了解一下

简介

触发器是与表有关的数据库对象,当表发生INSERT/UPDATE/DELETE操作时,对应操作的触发器会被触发,将在这些操作之前或之后执行触发器中定义的SQL语句集合。

触发器的使用

创建触发器

语法:

CREATE
    [DEFINER = user]
    TRIGGER trigger_name
    trigger_time trigger_event
    ON tbl_name FOR EACH ROW
    [trigger_order]
    trigger_body

user:指定在触发器激活时检查访问权限时要使用的MySQL帐户。

trigger_name:触发器名称。

trigger_time:触发动作时间。可以是BEFORE或AFTER,表示触发器在要修改的每一行之前或之后激活。

trigger_event:触发器的类型,可以是INSERT、UPDATE、DELETE。

tbl_name:和触发器关联的表名,必须为一个永久表,不能是视图或者临时表。

trigger_order:指定触发器顺序,取值为FOLLOWS/PRECEDES+触发器名称。(从MySQL 5.7.2开始,可以为表创建具有相同trigger_time和trigger_event的多个触发器,默认顺序是按创建顺序进行激活)

trigger_body:触发器激活时要执行的语句。如果要执行多个语句,需要使用BEGIN ... END复合语句包裹。

示例:

CREATE TRIGGER student_add2 AFTER INSERT ON tb_student 
FOR EACH ROW 
INSERT INTO tb_new_student (student_id, student_name) VALUES (NEW.id, NEW. NAME);

当在MySQL命令行创建执行多个语句的触发器时,同存储过程一样,也需要修改语句分隔符,如下:

mysql> delimiter //
mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON account
       FOR EACH ROW
       BEGIN
           IF NEW.amount < 0 THEN
               SET NEW.amount = 0;
           ELSEIF NEW.amount > 100 THEN
               SET NEW.amount = 100;
           END IF;
       END;//
mysql> delimiter ;
触发器类型

触发器分为三种类型:INSERT、DELETE、UPDATE。

在触发器主体中,使用OLD和NEW关键字能够访问受触发器影响的行中的列,根据触发器类型的不同,在关键字使用上也有些区别。(OLD和NEW是对MySQL触发器的扩展,它们不区分大小写)

INSERT触发器:当在表中插入新行时,触发器就会激活。插入操作只有新行,所以只有NEW关键字可用,可以通过NEW访问插入的新行数据。

DELETE触发器:当在表中删除一行时,触发器就会激活。删除操作只有旧行,所以只有OLD关键字可用,可以通过OLD访问删除的旧行数据。

UPDATE触发器:当表中一行数据被修改时,触发器就会激活。NEW关键字和OLD关键字都可用,可以通过NEW访问更新后的行数据,通过OLD访问更新前的行数据。

查看触发器定义

语法:

SHOW CREATE TRIGGER trigger_name

示例:

mysql> SHOW CREATE TRIGGER student_add;
+-------------+----------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| Trigger     | sql_mode                                                       | SQL Original Statement                                                                                                                                                         | character_set_client | collation_connection | Database Collation |
+-------------+----------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+
| student_add | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` TRIGGER student_add AFTER INSERT ON tb_student FOR EACH ROW INSERT INTO tb_new_student (student_id, student_name) VALUES (NEW.id, NEW. NAME) | utf8                 | utf8_general_ci      | utf8_general_ci    |
+-------------+----------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+

Trigger:触发器名称。

sql_mode:当触发器执行时,SQL模式生效。

SQL Original Statement:触发器的创建语句。

character_set_client:创建触发器时character_set_client系统变量的会话值。

collation_connection:创建触发器时collation_connection系统变量的会话值。

Database Collation:与触发器相关联的数据库的排序。

删除触发器

语法:

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name

示例:

mysql> DROP TRIGGER student_add;
Query OK, 0 rows affected

注意:如果表被删除,该表的关联的所有触发器也将会被删除

参考:Using Triggers

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL触发器了解一下

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL触发器了解一下

简介触发器是与表有关的数据库对象,当表发生INSERT/UPDATE/DELETE操作时,对应操作的触发器会被触发,将在这些操作之前或之后执行触发器中定义的SQL语句集合。触发器的使用创建触发器语法:CREATE [DEFINER = user]
MySQL触发器了解一下
2019-06-16

一文带你了解MySQL中触发器的操作

目录概述介绍触发器的特性操作—创建触发器操作—new和old操作—查看触发器操作—删除触发器注意事项概述介绍触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储
2023-02-17

MySQL 触发器

文章目录 1.简介2.行级与语句级触发器3.触发时机4.触发器优缺点5.创建触发器语法示例 6.查看触发器7.删除触发器参考文献 1.简介 触发器(Trigger)是与表关联的命名数据库对象,当表发生特定事件时激活。 触发器
2023-08-30

了解MySQL触发器的基本概念与用途

了解MySQL触发器的基本概念与用途MySQL触发器是一种特殊类型的存储过程,它在数据库中的表上定义了一系列的动作,当满足触发条件时就会被自动激活执行。通过触发器,可以实现数据库表的自动化操作,比如在插入、更新、删除等动作发生时执行相应的
了解MySQL触发器的基本概念与用途
2024-03-15

MySQL触发器

1、 触发器定义:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delet
MySQL触发器
2019-06-10

MySQL——触发器

基本语法 //创建触发器CREATE TRIGGER name//删除触发器DROP TRIGGER name 创建触发器 在创建触发器时需要给出4条信息 唯一的触发器名 触发器需要关联的表 触发器应该响应的活动(DELETE、INSTERT或UPDA
MySQL——触发器
2020-02-06
2024-04-02

mysql触发器trigger 实例详解

https://www.cnblogs.com/phpper/p/7587031.htmlMySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧:什么是触发器触发器是与表有关的数据库对象,在满足定义条件时
mysql触发器trigger 实例详解
2018-01-18

mysql触发器trigger实例详解

MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧: 什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在
2022-05-22

mysql触发器的三种触发事件

mysql触发器在特定事件发生时执行动作,有三种触发事件:1. before:在操作发生前触发,允许检查数据或更新其他表;2. after:在操作发生后触发,允许发送通知或分析数据;3. instead of:替代操作,允许完全控制对表的修
mysql触发器的三种触发事件
2024-08-01

编程热搜

目录