MySQL数据库DDL之触发器应用

上篇文章简单介绍了一下MySQL的基本操作之DDL、DML、DQL、DCL,在DDL中简单提了一下触发器,存储过程和函数,本篇文章将详细介绍触发器!

1、触发器作用:简单来说,触发器就是绑定在某个表上的一个特定数据库对象,当在这个表上发生某种触发器所监听的操作时,将会触发某种动作。

2、触发器用法:

CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW
BEGIN
    ...trigger_statement... #触发器的逻辑实现
END

参数解释:

trigger_name:触发器的名称
trigger_event:触发的事件,包括:INSERT,UPDATE,DELETE
trigger_time:触发的时间点,包括:BEFORE(事件之前触发),AFTER(事件之后触发)
table_name:触发器所在表
trigger_statement:触发器被触发之后,所执行的数据库操作逻辑,可以为单一的数据库操作,或者一系列数据库操作集合,也可以包含一些判断等处理逻辑;

注意:
(1)同一张表中不能同时存在两个类型一样的触发器;

(2)触发事件和触发时间点总共可以组成3组6种不同的触发器,分别为:(BEFORE INSERT,AFTER INSERT)、(BEFORE UPDATE,AFTER UPDATE)、(BEFORE DELETE,AFTER DELETE);

(3)触发事件:
① INSERT:在插入数据的时候触发,插入数据的动作包括INSERT,LOAD DATA,REPLACE操作,即:发生这三种操作时,都会触发INSERT类型的触发器;
② UPDATE:数据发生变更时触发,即:发生了UPDATE操作;
③ DELETE:从表中删除某一行的时候触发,即:发生了DELETE或者REPLACE操作;

(4)创建触发器的时候,由于在触发器的trigger_statement语句中有逻辑,而每个逻辑都会有结束符,默认为";",故需要在创建之前先定义定界符。防止SQL语句在执行之前被存储引擎(存储引擎:MySQL数据库的插件,后续介绍)解析的时候碰见";"而提前结束,提示语法错误。

3、示例:

(1)示例1:现在test_db中有两个表,一个为员工信息表t_emp,一个为部门统计表t_dept_statis,他们的表结构分别如下所示:

员工信息表:

CREATE TABLE `t_emp` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(50) NOT NULL DEFAULT '', #员工姓名
  `age` TINYINT(4) DEFAULT NULL,          #年龄
  `gender` ENUM('F','M') DEFAULT NULL,    #性别
  `dept_id` INT,                          #部门编号
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;

部门员工数量统计表&#

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值