设为首页收藏本站

爱学IT网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4863|回复: 0

[经验贴] mysql 触发器入门案例

[复制链接]
发表于 2021-9-18 20:03:38 | 显示全部楼层 |阅读模式
mysql 触发器入门案例

触发器的定义不在陈述。我们先了解一下触发器语法。

一、创建触发器语法规则:
  1. CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt
  2. trigger_name:触发器的名称
  3. tirgger_time:触发时机,为BEFORE或者AFTER
  4. trigger_event:触发事件,为INSERT、DELETE或者UPDATE
  5. tb_name:表示建立触发器的表明,就是在哪张表上建立触发器
  6. trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句
  7. 所以可以说MySQL创建以下六种触发器:
  8. BEFORE INSERT,BEFORE DELETE,BEFORE UPDATE
  9. AFTER INSERT,AFTER DELETE,AFTER UPDATE
复制代码

其中,触发器名参数指要创建的触发器的名字
BEFORE和AFTER参数指定了触发执行的时间,在事件之前或是之后
FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器
创建有多个执行语句的触发器
  1. CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件
  2. ON 表名 FOR EACH ROW
  3. BEGIN
  4.     执行语句列表
  5. END
复制代码

其中,BEGIN与END之间的执行语句列表参数表示需要执行的多个语句,不同语句用分号隔开
tips:一般情况下,mysql默认是以 ; 作为结束执行语句,与触发器中需要的分行起冲突
     为解决此问题可用DELIMITER,如:DELIMITER ||,可以将结束符号变成||
     当触发器创建完成后,可以用DELIMITER ;来将结束符号变成;

以上内容 来之:https://www.cnblogs.com/zh-1721342390/p/9602941.html

废话少说,直接来案例:
一、先来创建两个测试表,一个是用户user表,一个是用户信息表userinfo
  1. CREATE TABLE `user` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `name` varchar(32) NOT NULL,
  4.   `age` int(11) NOT NULL,
  5.   `cid` int(11) NOT NULL DEFAULT '1',
  6.   PRIMARY KEY (`id`),
  7.   KEY `id` (`id`)
  8. ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;


  9. CREATE TABLE `userinfo` (
  10.   `id` int(11) NOT NULL AUTO_INCREMENT,
  11.   `uid` int(11) NOT NULL,
  12.   `name` varchar(32) NOT NULL,
  13.   PRIMARY KEY (`id`),
  14.   KEY `uid_2` (`uid`),
  15.   KEY `uid` (`uid`)
  16. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
复制代码
<hide>
游客,如果您要查看本帖隐藏内容请回复








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

申请友链|京ICP备13007648号-1|小黑屋|爱学IT网    

GMT+8, 2021-10-27 22:09 , Processed in 0.156244 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表