触发器语句只有一句话

可以省略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创建触发器的更多相关文章

  1. 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 ...

  2. MySQL创建触发器样例

    # init DROP TABLE IF EXISTS students; DROP TABLE IF EXISTS class; # 创建测试用的班级表 CREATE TABLE class ( c ...

  3. Mysql 中如何创建触发器

    use websitelogdb; #创建表 CREATE TABLE `test` ( `idtest` int(11) NOT NULL AUTO_INCREMENT, `testcol` var ...

  4. MySql创建函数与过程,触发器, shell脚本与sql的相互调用。

    一:函数 1:创建数据库和表deptartment, mysql> use DBSC; Database changed mysql), ), )); Query OK, rows affect ...

  5. mysql用户创建触发器权限不足跟参数log_bin_trust_function_creators

    问题描述 有业务反馈当前用户无法创建触发器和存储过程,让用户自己测试,该用户进行对表的增删改查等其他权限没有问题,这边用root用户查证,该用户拥有对当前库的所有权限,但是为什么就是创建不了触发器呢? ...

  6. MySql之触发器【过度变量 new old】

    trigger是由事件触发某个操作.这些事件包括insert语句.update语句和delete语句.当数据库执行这些事件时,就会激活触发器执行相应的操作. [1]只有一个执行语句 create tr ...

  7. mysql之触发器trigger 详解

    为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table)  ...

  8. mysql之触发器

    触发器     MySQL语句在需要时被执行,存储过程也是如此.但是,如果你想要某条语句(或某些语句)在事件发生时自动执行,怎么办呢?例如:每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正 ...

  9. Mysql笔记——触发器简单实例

    首先贴上触发器语法吧: CREATE TRIGGER <触发器名称> –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFOR ...

随机推荐

  1. input子系统

    input子系统:      像按键.键盘.鼠标.触摸屏.游戏摇杆等设备只有输入没有输出,而且在编程实现其对应的驱动程序时会有很多重复性的代码,内核的设计者将该部分代码抽象出来,驱动工程师只需要复用该 ...

  2. HQL的一些语句总结

    HQL原文来自:http://slaytanic.blog.51cto.com/2057708/782175/   Slaytanic老师 关于Hadoop的介绍来自:http://www.cnblo ...

  3. Docker+OpenvSwitch搭建VxLAN实验环境

    一.概述                                                    1.环境:我这里是2台linux机器(host1和host2),发行版是kali2.0, ...

  4. java报表工具FineReport的公式编辑框的语法简介

    FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式, ...

  5. [转]六款值得推荐的android(安卓)开源框架简介

    本文转自:http://www.jb51.net/article/51052.htm .volley 项目地址 https://github.com/smanikandan14/Volley-demo ...

  6. storm集群搭建

    安装环境: 虚拟操作系统:centOS7 64位  2台 IP地址为192.168.1.10   192.168.1.11 内存:1GB内存 zookeeper版本 :3.4.6 Storm版本:0. ...

  7. 应用程序Cache对象到高性能Memcached学习之路

    来源:微信公众号CodeL 以下是个人学习之路的简单分享,不足之处欢迎大神们批评指正! 在网站开发的初期,我们没有考虑更多的东西,也没有对缓存进行系统的设计,而是直接使用了应用程序缓存对象Cache, ...

  8. Caffe 抽取CNN网络特征 Python

    Caffe Python特征抽取 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ Caffe大家一般用到的深度学 ...

  9. AC日记——加密的病历单 openjudge 1.7 12

    12:加密的病历单 总时间限制:  1000ms 内存限制:  65536kB 描述 小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会. 在药房实习期间,小英扎实的专业基础获得了医生的一致 ...

  10. MIT License

    早上看到微软的UWP例子,在代码里看到 Copyright (c) Microsoft. All rights reserved.// This code is licensed under the ...