MySQL触发器定义
触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程。
MySQL触发器作用
触发器主要用于监视某个表的insert、update以及delete等更新操作,这些操作可以分别激活该表的insert、update或者delete类型的触发程序运行,从而实现数据的自动维护。
MySQL触发器使用场景
- 可以通过数据库中的相关表实现级联更改;
- 实时监控表中字段的更改做出相应处理;
MySQL触发器创建
语句:
CREATE TRIGGER <触发器名> <触发时机 BEFORE | AFTER> <触发事件 INSERT | UPDATE | DELETE > ON <表名> FOR EACH Row <触发器主体> END;
- trigger_name:触发器的名称;
- tirgger_time:触发时机,为BEFORE或者AFTER;
- trigger_event:触发事件,为INSERT、DELETE或者UPDATE;
- tb_name:表示建立触发器的表明,就是在哪张表上建立触发器;
- trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句;
MySQL触发器种类
MySQL的触发事件有三种:
1.insert
将新记录插入表时激活触发程序,例如通过:insert、load data和replace语句,可以激活触发程序运行。
2.update
更改某一行记录时激活触发程序,例如通过update语句,可以激活触发程序运行。
3.delete
从表中删除某一行记录时激活触发程序,例如通过delete和replace语句,可以激活触发程序运行。
触发器的触发时间有两种:
before:表示在触发事件发生之前执行触发程序;
after: 表示在触发事件发生之后执行触发器。
因此严格意义上讲一个数据库表,最多可以设置六种类型的触发器:
- Before Insert
- After Insert
- Before Update
- After Update
- Before Delete
- After Delete
MySQL触发器示例
create database if not exists mydb01_trigger; use mydb01_trigger; -- 用户表 create table if not exists user( uid int primary key auto_increment, username varchar(50) not null, password varchar(50) not null )default charset=utf8; -- 用户信息操作日志表 create table if not exists user_logs( id int primary key auto_increment, time timestamp, log_text varchar(100) )default charset=utf8; -- 需求1:当user表添加一行数据,则会自动在user_log添加日志记录 -- 定义触发器: trigger_test1 create trigger trigger_test1 after insert on user for each row insert into user_logs values(NULL,now(),'new'); -- 在user表添加数据,让触发器自动执行 insert into user values(2,'zbb','123456');
mikechen睿哥
mikechen睿哥,十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》