《mysql必知必会》读书笔记--触发器及管理事务处理
Posted 黑桃不是吃的
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《mysql必知必会》读书笔记--触发器及管理事务处理相关的知识,希望对你有一定的参考价值。
触发器
触发器是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标志是针对每个连接,而不是服务器;
以上是关于《mysql必知必会》读书笔记--触发器及管理事务处理的主要内容,如果未能解决你的问题,请参考以下文章