mysql创建触发器
触发器语句只有一句话
可以省略begin和end
CREATE trigger `do_praise`
after insert on praise
for each row
update post set praiseCount=praiseCount+1;
关于delimiter
在sql中,许多关键符号都没有强制要求,而是由用户指定,比如escape
select '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的任何操作了(包括增删改)。
mysql创建触发器的更多相关文章
- MySQL创建触发器的时候报1419错误( 1419 - You do not have the SUPER privilege and binary logging is enabled )
mysql创建触发器的时候报错: 解决方法:第一步,用root用户登录:mysql -u root -p第二步,设置参数log_bin_trust_function_creators为1:set gl ...
- MySQL创建触发器样例
# init DROP TABLE IF EXISTS students; DROP TABLE IF EXISTS class; # 创建测试用的班级表 CREATE TABLE class ( c ...
- Mysql 中如何创建触发器
use websitelogdb; #创建表 CREATE TABLE `test` ( `idtest` int(11) NOT NULL AUTO_INCREMENT, `testcol` var ...
- MySql创建函数与过程,触发器, shell脚本与sql的相互调用。
一:函数 1:创建数据库和表deptartment, mysql> use DBSC; Database changed mysql), ), )); Query OK, rows affect ...
- mysql用户创建触发器权限不足跟参数log_bin_trust_function_creators
问题描述 有业务反馈当前用户无法创建触发器和存储过程,让用户自己测试,该用户进行对表的增删改查等其他权限没有问题,这边用root用户查证,该用户拥有对当前库的所有权限,但是为什么就是创建不了触发器呢? ...
- MySql之触发器【过度变量 new old】
trigger是由事件触发某个操作.这些事件包括insert语句.update语句和delete语句.当数据库执行这些事件时,就会激活触发器执行相应的操作. [1]只有一个执行语句 create tr ...
- mysql之触发器trigger 详解
为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) ...
- mysql之触发器
触发器 MySQL语句在需要时被执行,存储过程也是如此.但是,如果你想要某条语句(或某些语句)在事件发生时自动执行,怎么办呢?例如:每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正 ...
- Mysql笔记——触发器简单实例
首先贴上触发器语法吧: CREATE TRIGGER <触发器名称> –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFOR ...
随机推荐
- C语言(函数)学习之strstr strcasestr
C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...
- 让CKEditor支持FLV视频播放
平时都是做C/S开发,最近需要维护一个协会门户网站. 文章编辑使用CKEditor 3.3.2 + ckfinder 2.0的方案.可是这种方案居然不支持FLV视频播放,度娘说以前的老版本是支持的,这 ...
- web报表移动端如何进行移动设备绑定与撤销
场景需求描述 为了增强移动端的登录机制验证,保证数据的安全性,报表工具FineReport提供了移动设备绑定的功能,每个系统用户在使用移动端连接系统的时,需要管理员授权,将用户的移动设备与系统绑定起来 ...
- .Net程序员之Python基础教程学习----字典的使用 [Third Day]
今天学习了字典的使用, 所谓的字典其实就是键值对数据, 一个字典里面有唯一的Key对应一个value,Key是唯一的,Value不唯一. 在.net添加相同的Key会报错,在Python,若出现相 ...
- 连载《一个程序猿的生命周期》-28、被忽悠来的单身HR(女同志)
一个程序猿的生命周期 微信平台 口 号:职业交流,职业规划:面对现实,用心去交流.感悟. 公众号:iterlifetime 百木-ITer职业交流奋斗 群:141588103 微 博:h ...
- 最小生成树POJ3522 Slim Span[kruskal]
Slim Span Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7594 Accepted: 4029 Descrip ...
- JAVA设计模式之工厂模式
工厂模式概念: 实例化对象,用工厂方法代替new操作 工厂模式包括工厂方法模式和抽象工厂模式 抽象工厂模式是工厂方法模式的扩展 工厂模式的意图: 定义一个接口来创建对象,但是让子类来决定哪些类需要被实 ...
- 初识Struts2
一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...
- JS原型与原型链终极详解
一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object ,Function 是JS自带的函数对象.下面举例说明 function f ...
- History 对象
History 对象 History 对象包含用户(在浏览器窗口中)访问过的 URL. History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问. 注 ...