【基础】触发器

前言

Github:https://github.com/yihonglei/road-of-arch/tree/master/thinking-in-mysql

概述

MySql 从 5.0.2 开始支持触发器。触发是与表相关的数据库操作,在满足定义条件时触发,并执行触发器中定义的语句。

可以协助应用程序在数据库端确保数据的完整性,减少不必要的逻辑处理。触发器只能创建在永久表上,不能创建在临时表上。

对于同一个表,相同触发时间,相同触发事件,只能定义一个触发器。

创建语法:

CREATE TRIGGER trigger_name trigger_time trigger_event

ON table_name FOR EACH ROW trigger_statement

trigger_name:触发器名字

trigger_time:触发时间,包括 before 或 after,before 是指在检查约束前触发,after 是检查约束后触发

trigger_event:触发事件,包括insert,update 或 delete

table_name:触发器针对的表名

trigger_statement:触发器触发后执行的sql集合

FOR EACH ROW:行级触发器,Mysql 不支持语句级触发器

注意:使用 old 和 new 来引用触发器中发生变化的记录内容。

一 实例准备条件

创建表1:

CREATE TABLE `t_user_main` (
  `f_userId` int(10) NOT NULL AUTO_INCREMENT COMMENT '用户id,作为主键',
  `f_userName` varchar(5) DEFAULT NULL COMMENT '用户名',
  `f_age` int(3) DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`f_userId`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

插入数据:

INSERT INTO t_user_main (f_userName, f_age) 
VALUES('one',24),('two',25),('three',26),('four',27),('five',28),('six',29);

创建表2:

CREATE TABLE `t_user_person_info` (
  `f_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `f_userId` int(11) NOT NULL COMMENT '用户id',
  `f_salary` decimal(14,2) NOT NULL DEFAULT '0.00' COMMENT '工资',
  PRIMARY KEY (`f_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

二 创建触发器实例

DELIMITER $$
CREATE TRIGGER user_main_tr AFTER INSERT
ON t_user_main
FOR EACH ROW
BEGIN
  INSERT INTO t_user_person_info(f_userId) VALUES (new.f_userId);
END $$
DELIMITER;

测试触发器:

三 查看触发器

触发器查看不如表,视图,函数,存储过程查看方便,mysql提供的触发器查看命令如下:

show triggers \G;

该命令只能查看所有的触发器,如果需要查看具体的触发器,需要使用系统库 information_schema 查询。

查看所有触发器,这里只有一个,所以看到一个,如果有多个,可以看到多个:

指定触发器查看:

四 删除触发器

DROP TRIGGER [schema_name.] trigger_name;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值