mysql触发器详解
来源:互联网 发布:sql查询分析器在哪2005 编辑:程序博客网 时间:2024/06/18 11:59
何为触发器
数据库的表中的事件(insert、update、delete)激活的对象称为触发器,使得数据库可以在事件之前、之后去做一些事情。因为使用触发器可以减少客户端和服务器直接的通信,所以触发器可以简化应用逻辑,还可以提高性能。另外,还可用用于自动更新反范式数据或者汇总表数据。在InnoDB表上的触发器是在同一个事务中完成的,所以它们执行的操作是源自的。原操作和触发器操作会同时失败或者成功。
实例:每个用户都有一个邀请码(用户表ycd_sys_user中的inviteCode),然后每邀请一个人注册(邀请记录表invite_user),TA的邀请人数+1(ycd_sys_user表中的inviteCount)
添加触发器
语法:
CREATE TRIGGER trigger_nametrigger_timetrigger_event ON tbl_nameFOR EACH ROWbegin ……end
参数详解:
trigger_name为触发器的名字
trigger_time为触发器的执行时机(AFTER或者BEFORE)。before就是在sql执行之前,先执行触发器;after相反。
trigger_event触发器的触发事件(常见的有3种:insert、uodate、delete)
tbl_name则是触发器要加在哪张表中
begin end之间写程序体,如果仅有1条语句,则可以不用begin end,直接将语句写在后面。
-- 将分隔符修改为$ 因为mysql默认的分隔符是;在begin和end之间的 多条sql语句里,mysql遇到分号,便先执行分号之前的sql语句,-- 然而,只有begin,没有end,所以这段语句执行就出错了。因词,修改mysql的分隔符,让mysql遇到;的时候,继续往下执行。只有遇到-- 我们设置的分隔符$的时候,才认为此段结束。DELIMITER $create trigger tri_updateInviteCount after inserton invite_user for each rowbegindeclare c int;set c = (select inviteCount from ycd_sys_user where inviteCode=new.inviteCode limit 1);update ycd_sys_user set inviteCount = c + 1 where inviteCode = new.inviteCode;end$-- 将分隔符修改为mysql默认的;DELIMITER ;
查看触发器:
语法:SHOW TRIGGERS FROM [库名]
将查出来整个库下面的所有触发器
show triggers from ycd_test删除触发器:
语法:DROP TRIGGER [库名].[触发器名称]
DROP TRIGGER ycd_test.tri_updateInviteCount;
阅读全文
1 0
- mysql的触发器详解
- Mysql触发器详解
- mysql数据库触发器详解
- MySQL 之 触发器详解
- Mysql 的触发器详解
- Mysql触发器详解
- MySQL之触发器详解
- MySQL触发器使用详解
- MySQL触发器使用详解
- mysql触发器用法详解
- MySQL触发器使用详解
- MySQL触发器使用详解
- MySQL触发器使用详解
- MySQL触发器使用详解
- MySQL触发器使用详解
- MySQL触发器使用详解
- MySQL触发器使用详解
- mysql触发器详解
- SSM(八)动态切换数据源
- python网络爬虫基础(2)--Beautiful Soup库
- POJ410 Intersection 计算几何
- 以太坊abi解析
- ORA-01017: 用户名/口令无效; 登录被拒绝
- mysql触发器详解
- 深入解析Spark中的RPC
- Git忽略规则及.gitignore规则不生效的解决办法
- xp3下保护xuetr
- 一致性哈希算法及其在分布式系统中的应用
- 克服拖延的11种方法
- JavaScript进阶:深入理解事件与事件流
- elasticsearch 5.4安装
- 监控SQL Server正在执行的SQL语句和死锁情况