13.触发器
13.1 创建触发器
定义:触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。
语法:
create trigger 触发器名称 触发时机 触发事件 on 表名 for each row
begin
触发动作;
end$$
说明:
触发时机分为before和after,表示触发器在DML语句之前还是之后触发。
触发事件分为insert、update、delete,表示触发器被特定类型的DML语句(insert、update、delete)触发。
触发动作是触发器所要执行的语句集合。
伪记录OLD和NEW,用来表示变前行和变后行,只能在行级触发器内使用。
触发事件函数inserting、updating、deleting,用来区分不同的触发事件以执行不同的触发动作。
注意:
mysql目前只支持行级触发器,暂不支持语句级触发器。
mysql目前对同一个表相同的触发时机和触发事件下只能定义一个触发器。
mysql目前不支持触发事件函数(inserting、updating、deleting),所以不同的触发事件需要单独建立触发器。
对于插入或更新语句(insert into ... on duplicate key update ...),在新增重复数据时会触发before insert、before update、after update类型相关的触发器。
例子:

13.2 删除触发器
语法:
drop trigger schema.trigger_name;
说明:
一次可以删除一个触发器;
schema未指定时默认为当前数据库。

13.3 查看触发器
查看全部触发器:
show triggers;
查看特定触发器:
select * from information_schema.triggers where trigger_name='***';

13.4 触发器的使用
触发动作限制:
触发程序不能调用将数据返回给客户端的存储程序(触发器里不能调用函数),
也不能使用采用call语句的动态sql语句(不能使用动态sql),
不能在触发器中使用以显式或隐式方式开始或结束事务的语句,如Start transaction、commit、rollback等(不能进行事务处理)。
触发器允许存储程序通过参数将数据返回触发程序(可以调用存储过程)。
触发顺序:before触发器--》DML语句--》after触发器。
触发器对事务表进行操作时,整个操作作为一个事务,如果发生异常,操作将被全部回滚;
触发器对非事务表进行操作时,整个操作不会作为一个事务,如果发生异常,操作将被中断,已更新的记录不进行回滚。

13.5 小结
不要将应用的处理逻辑过多的依赖于触发器来处理。

13.Mysql触发器的更多相关文章

  1. redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)

    一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...

  2. MySQL触发器在PHP项目中用来做信息备份、恢复和清空的方法介绍

    案例:通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能). 思路:要有一张员工表,还要有一张 ...

  3. mysql触发器Before和After的区别

    Before与After区别:before:(insert.update)可以对new进行修改.                    after不能对new进行修改.                 ...

  4. 【mysql】mysql触发器使用示例

    mysql触发器 时间点:before/after 触发事件: update/delete/insert 时间点+触发事件:构成一个完整的触发器的触发时机: 一个触发时机最多只能由1个Trigger: ...

  5. MySQL 触发器示例

    简介: MySQL 触发器 这次实验是在一台 MySQL Slave 上进行的,事实证明:从库添加数据库.表.插入.删除数据等,不会导致主从失败. 一.创建实验数据库.表 mysql > cre ...

  6. MySQL触发器的详细教学与综合分析

    所有知识体系文章,GitHub已收录,欢迎老板们前来Star! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual MySQL触发器 ...

  7. MySQL触发器如何正确使用

    MySQL触发器如何正确使用 2010-05-18 15:58 佚名 博客园 字号:T | T 我们今天主要向大家介绍的是MySQL触发器进行正确使用,其中包括对MySQL触发器发器的语句创建,触发时 ...

  8. 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)

    1   引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

  9. mysql触发器的例子--插入前更新数据

    本文介绍下,一个mysql触发器的例子,在数据插入前更新相关内容,有需要的朋友参考下. mysql触发器的例子,如下: view source print? 001 mysql> CREATE  ...

随机推荐

  1. 封装jQuery下载文件组件

    使用jQuery导出文档文件 jQuery添加download组件 jQuery.download = function(url, data, method){ if( url && ...

  2. Structs复习 字符编码问题

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...

  3. Java解决输出数组问题

    package test; public class doubleshuzu { public static void main(String[] args) { double a[][]; Stri ...

  4. FMS Dev Guide学习笔记(远程共享对象)

    一.开发交互式的媒体应用程序1.共享对象(Shared objects)    ----远程共享对象 在你创建一个远程共享对象之前,创建一个NetConnection对象并且连接到服务器.一旦你创建了 ...

  5. 通过网址request到response经历的过程

    前言当我们在浏览器中输入一个网址,比如www.google.cn,浏览器就会加载出百度的主页.那么浏览器背后完成的具体是怎么样的呢? 总结起来大概的流程是这样的: (1)浏览器本身是一个客户端,当你输 ...

  6. java 集成友盟推送

    原文:https://blog.csdn.net/Athena072213/article/details/83414743 最近应公司业务需求需要完善友盟推送,认真看了官方文档后其实很简单,只需要细 ...

  7. linux下WIFI的AP搜索、连接方法

    wpa_supplicant -Dwext -ieth1 -c/etc/wpa_supplicant.conf  &wpa_cli save_configwpa_cli reconfigure ...

  8. Java的学习04

    今天依旧记录一下,学习的东西. import java.io.File; import java.io.IOException; import java.util.Date; /** * 测试File ...

  9. Spring 7种事务传播行为

    1.PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置. 2.PROPAGATION_SUPPORTS:支持当前事务,如 ...

  10. jdbc连接模拟用户登陆密码判断

    package com.aaa.demo1; import com.aaa.utils.JdbcUtils; import java.sql.Connection; import java.sql.P ...