MySQL数据库总结(9)触发器
2016-03-13 14:01
141 查看
触发器 trigger 一触即发
四要素
创建触发器的语法
如何在触发器引用行的值
触发器里before和after的区别
应用场合
能监视: 增.删.改
触发操作: 增.删.改
小技巧:修改结束符 delimiter $
删除触发器: Drop trigger 触发器名;
查看触发器: show triggers;
行中的每一列的值,用new.列名来表示
对于delete来说,原本有一行,后来被删除,
想引用被删除的这一行,用old,来表示old.列名,就可以引用被删除行中的值
对于update来说,
被修改的行,
修改前的数据,用old来表示,old.列名引用被修改之前行中的值
修改后的数据,用new来表示,new.列名引用被修改之后行中的值
触发的语句晚于监视的增,删,改,无法影响前面的增删改动作
Before是先触发,再增,删,改
触发的语句先于监视的增,删,改,发生,我们有机会判断,修改即将发生的操作.
比如,当一个订单产生时,订单所购的商品的库存量相应减少。
2.当表上某列数据的值与其他表中的数据有联系时。
比如,当某客户进行欠款消费,
可以在生成订单时通过设计触发器判断该客户的累计欠款是否超出了最大限度。
3.当需要对某张表进行跟踪时。
比如,当有新订单产生时,需要及时通知相关人员进行处理,
此时可以在订单表上设计添加触发器加以实现
典型案例:
对于所下订单进行判断,如果订单的数量>5,就认为是恶意订单,
强制把订单的商品数量改成5
监听地点 o表
监听事件 insert
触发事件 update
触发时间 before
目的,触发时间先于监视事件发生,并判断监视事件的数据
四要素
创建触发器的语法
如何在触发器引用行的值
触发器里before和after的区别
应用场合
触发器: trigger 一触即发
作用:监视某种情况并触发某种操作能监视: 增.删.改
触发操作: 增.删.改
四要素:
监视地点、监视事件、触发时间、触发事件创建触发器的语法:
Create trigger triggerName After/before insert/update/delete on 表名 For each row #这句话是固定的 Begin Sql语句 #一句或多句,insert/update/delete范围内 End;
小技巧:修改结束符 delimiter $
删除触发器: Drop trigger 触发器名;
查看触发器: show triggers;
如何在触发器引用行的值
对于insert而言,新增的行 用new来表示,行中的每一列的值,用new.列名来表示
对于delete来说,原本有一行,后来被删除,
想引用被删除的这一行,用old,来表示old.列名,就可以引用被删除行中的值
对于update来说,
被修改的行,
修改前的数据,用old来表示,old.列名引用被修改之前行中的值
修改后的数据,用new来表示,new.列名引用被修改之后行中的值
触发器里before和after的区别
After是先增,删,改 再触发触发的语句晚于监视的增,删,改,无法影响前面的增删改动作
Before是先触发,再增,删,改
触发的语句先于监视的增,删,改,发生,我们有机会判断,修改即将发生的操作.
应用场合:
1.当向一张表中添加或删除记录时,需要在相关表中进行同步操作。比如,当一个订单产生时,订单所购的商品的库存量相应减少。
2.当表上某列数据的值与其他表中的数据有联系时。
比如,当某客户进行欠款消费,
可以在生成订单时通过设计触发器判断该客户的累计欠款是否超出了最大限度。
3.当需要对某张表进行跟踪时。
比如,当有新订单产生时,需要及时通知相关人员进行处理,
此时可以在订单表上设计添加触发器加以实现
典型案例:
对于所下订单进行判断,如果订单的数量>5,就认为是恶意订单,
强制把订单的商品数量改成5
监听地点 o表
监听事件 insert
触发事件 update
触发时间 before
目的,触发时间先于监视事件发生,并判断监视事件的数据
Create trigger tg5 before insert on o For each row Begin If new.much > 5 then Set new.much = 5; End if; Update g set num = num – new.much where id = new.gid; End$
相关文章推荐
- MySql之ALTER命令用法详细解读(转)
- 修改mysql root 密码 及 mysql 远程访问
- MySQL数据库总结(8)字符集与校对集
- MySQL数据库总结(7)视图
- MySQL数据库总结(6)列类型及列的增删改
- MySQL数据库总结(5)左连接,右连接,内连接
- MySQL数据库总结(4)子查询与联合
- Ubuntu15.10操作mysql5.6数据库
- MySQL中复制数据表中的数据到新表中的操作教程
- 在Ubuntu上使用apt-get安装MySQL+安全优化
- 在Ubuntu上源码安装MySQL+安装问题解决+安全优化
- mysql中日期时间型解析
- 【Mysql】----安装教程
- mysql 用户管理和权限设置(转)
- MySQL存储引擎 MyISAM与InnoDB区别
- 在windows导入mysql的示例employees数据库
- MySQL数据库总结(3)数据库的备份与恢复与破解密码,DCL用户权限查
- mysql数据库表修改某一列的类型
- MySQL数据库总结(2)增删改查
- 不停止MySQL服务增加从库的两种方式【转载】