触发器

  触发器是MySQL响应DELETE,INSERT,UPDATE而自动执行的一条MySQL语句,其他语句不支持触发器。

  创建触发器时,需要4个条件;
    唯一的触发器名
    触发器关联的表
    触发器应该响应的活动
    触发器何时执行

  MySQL中触发器名在每个表中必须唯一,但是在同一个数据库中的两个表可具有相同名字的触发器。这个条件在其他的DBMS中是不允许的,所以为了统一,最好在同一个数据库中,触发器名设置成唯一的。

创建触发器

CREATE TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW SELECT 'Product added'; CREATE TRIGGER--创建一个叫newproduct的新触发器
AFTER INSERT--此触发器将在INSERT语句成功后执行
FOR EACH ROW--代码对每个插入行执行

  注意:

    只有表才可以支持触发器,视图、临时表都不支持
    每个表最多支持6个触发器。单一的触发器不能与多个事件或多个表关联。
    如果BEFORE触发器失败,MySQL将不执行请求操作。
    如果BEFORE触发器或语句本身失败,MySQL将不执行AFTER触发器

删除触发器

DROP TRIGGER newproduct;

  触发器不能修改或者覆盖,如要修改必须先删除,再创建。

使用触发器

  INSERT触发器
    可以引用一个叫NEW的虚拟表,来访问插入的行
  DELETE触发器
    引用一个叫OLD的虚拟表,来访问被删除的行
  UPDATE触发器
    书中缺页未介绍

管理事务处理

  MySQL中有好几种引擎,但是不是每种引擎都支持事务处理
  常用的引擎中InnoDB支持事务,MyISAM不支持事务
  几个名词:
    事务transaction
    回退rollback
    提交commit
    保留点savepoint

控制事务管理

ROLLBACK

SELECT * FROM ordertotals;
START TRANSACTION;
DELETE FROM ordertotals;
SELECT * FROM ordertotals;
ROLLBACK;
SELECT * FROM ordertotals;

  注意:事务用来管理INSERT、UPDATE和DELETE。不能回退CREATE或者DROP操作

COMMIT

START TANSACTION;
DELETE FROM orderitems WHERE order_num = 20010;
DELETE FROM order WHERE order_num = 20010;
COMMIT;

  保留点

-- 创建保留点
SAVEPOINT delete1;
-- 回滚到保留点
ROLLBACK TO delete1;

  保留点再执行ROLLBACK或COMMIT后自动释放,mysql 5之后可以用RELEASE SAVEPOINT 明确释放保留点

  更改默认的提交行为

SET autocommit=0

  注意:autocommit标志是针对每个连接,而不是服务器;

最新文章

  1. 【html/css】html/css命名规范
  2. pkg-config问题:
  3. [Prism框架实用分享]如何在主程序中合理的弹出子窗体
  4. 由Tencent://Message协议想到的一个解决方案
  5. 二维码zxing源码分析(五)精简代码
  6. EasyHook远注简单监控示例 z
  7. python--列表的使用
  8. PowerShell 导出SharePoint管理中心解决方式
  9. 用CSS border相关属性画三角形
  10. ubuntu 硬件系统信息
  11. C++基于该模型模板包括节目外实例
  12. cp 覆盖 \cp a test\a
  13. 【java】io流之字符输出流:java.io.Writer类及子类的子类java.io.FileWriter
  14. 解决 'boost/iterator/iterator_adaptor.hpp' file not found’ 及控制台":CFBundleIdentifier", Does Not Exist
  15. 报错TypeError: $(...).live is not a function解决方法
  16. 记一次用express手写博客
  17. Egret_简单的封装方法
  18. 浏览器端使用javascript调用腾讯翻译api
  19. Linux常用功能及实现命令
  20. CentOS_mini下安装docker 之 安装docker CE

热门文章

  1. json 转 T
  2. PHPExcel IE导出乱码问题
  3. loadimage1();有问题
  4. VS2013和VS2010工具集和字符集
  5. Laravel5.1 搭建博客 --编译前端文件
  6. 四个dos命令检查你的电脑是否中木马
  7. 电力项目十三--js添加浮动框
  8. AMD、CMD、CommonJs和 ES6对比
  9. cocos2dx-draw绘制
  10. Python目录整合