mysql创建触发器
2016-04-25 14:23
603 查看
触发器语句只有一句话
可以省略begin和endCREATE trigger `do_praise` after insert on praise for each row update post set praiseCount=praiseCount+1;
关于delimiter
在sql中,许多关键符号都没有强制要求,而是由用户指定,比如escapeselect 'we#' like 'we#%';-- escape '#';
没有注释结果就是1,有注释结果就是0。比如要匹配包含‘%’的字符串,就要写成'%#%%' escape '#'。
delimiter表示分隔符,默认为分号,也可以写成一个字符串:
delimiter weidiao select 3weidiao select 4; select 5;
上面这段代码就会报个错,说select 4和select 5之间缺少分隔符。
综上可知,这种实现就是简单的字符串替换,相当于#define宏定义。
触发器语句有多句话
不能省略begin和end,end后面需要跟一个delimiter。在begin和end之间的必然是sql代码,sql代码的分隔符必然是分号而不是自定义的其他字符串。因为触发器
那么这个delimiter是啥符号呢?是声明出来的,可以声明成一个字符串,比如
delimiter ;;;;;;;
可以声明成@#$%^&*等符号,也可以声明称其他任意字符串。在触发器之前,要声明一种delimiter,在触发器定义结束之后,也要定义一种delimiter(这是其实就相当于返回到‘;’作为分隔符的情况)
delimiter @ CREATE trigger `do_praise` after insert on praise for each row begin update post set praiseCount=praiseCount+1; end @ delimiter ;
触发器六种类型
(before+after)*(insert+delete+update)=6种情况
使用workbench可以可视化创建触发器,可以集中注意力在触发器语句上
触发器的安全性
这三样东西before触发器
增删改语句
after触发器
是一个事务,只要有一环出错,后面就不再执行;只要有一环出错,事务就会回滚,前面的操作就会失效。
创建触发器的大忌
不能产生回路,比如表1的插入触发表二的删除,表二的删除就不能再触发表1的任何操作了(包括增删改)。相关文章推荐
- MyBatis与MySQL交互
- MyBatis与MySQL交互
- MySQL(六) —— 自定义函数
- MySQL连接、删除、创建与调优
- Mysql存储过程
- mysql的日志
- mysql 中tinytext、text、mediumtext和longtext详解
- 从MySQL官方Yum仓库安装MySQL5.6
- MySQL5.7更改端口号
- 一次MySQL(INNODB存储引擎) 死锁捉虫记
- 用MySQL实现微博关注关系的方案分析
- Mysql 去重
- MySQL表名不区分大小写的设置方法
- mysql删除表数据中某个唯一字段出现重复的数据
- Mysql常用命令集
- MySQL配置
- mysql基础---->基本命令与13道练习
- MySql的flush用法
- PostgreSQL和MySQL的性能对比实验
- MySQL快速学习入门