触发器语句只有一句话

可以省略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. x01.os.10: 输入输出

    从 x01.Lab.Download 中下载源代码,进入工程目录,make 后再 bochs,即可见到如下界面: 随便打几个字,ok!按 F2,可切换到第二个终端,界面如下: 当然,按 F3 还可切换 ...

  2. LNMP环境搭建

    LNMP环境搭建 Linux + Nginx + MySQL + PHP PHP是一种脚本语言,当前中国乃至世界上使用PHP语言开发的网站非常普遍 Nginx是一个web服务软件,和apache是一类 ...

  3. 新版Microsoft Azure Web管理控制台 - Microsoft Azure New Portal - (1)

    国际版Microsoft Azure的Preview Portal已经于12月2日正式GA,现在登录国际版的Microsoft Azure,默认就会进入Microsoft Azure New Port ...

  4. Vim 命令整理

    1. 文件命令 2. 模式切换 3. 移动命令 4. 书签命令 5. 修改命令 6. 可视化操作 7. 区域选择 8. 宏命令 9. 分屏 10. 系统设置命令 1. 文件命令 [:]开始的命令需要输 ...

  5. selenium结合sikuliX操作Flash网页

    sikuli的官网地址:http://www.sikuli.org 首先下载sikuliX的jar包:https://launchpad.net/sikuli/sikulix/1.1.0 java-d ...

  6. 【CSS】使用边框和背景

    1. 应用边框样式 先从控制边框样式的属性开始.简单边框有三个关键属性:border-width.border-style 和 border-color . <!DOCTYPE html> ...

  7. Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

    Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...

  8. java 25 - 3 网络编程之 Socket套接字

    Socket Socket套接字: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. Socket原理机制: 通信的两端都有Socket. 网络通信其实就是Socket ...

  9. 在C++中实现字符串分割--split

    字符串分割 在一些比较流行的语言中,字符串分割是一个比较重要的方法,不论是在python,java这样的系统级语言还是js这样的前端脚本都会在用到字符串的分割,然而在c++中却没有这样的方法用来调用. ...

  10. http协议(四)http状态码

    一:http状态码 表示客户端http请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作 状态码的类别如下: http状态码种类繁多,大概有60多种,实际上经常使用的只有14种,下面为一 ...