关于MYSQL的事务处理,事务控制

  1. 并非所有的引擎都支持事务,MYISAM就不支持事务,INNODB支持事务

事务处理:

  1. 可以维护数据库的完整性,保证成批的MYSQL操作要么完全执行,要么完全不执行
  2. 如果发生错误,则进行回退(撤销)以恢复数据库到某个已知且安全的状态

在使用事务和事务处理时,有几个关键词汇反复出现。下面是关于事务处理需要知道的几个术语:

事务(transaction) 指一组SQL语句;

回退(rollback) 指撤销指定SQL语句的过程;

提交(commit) 指将未存储的SQL语句结果写入数据库表;

保留点(savepoint) 指事务处理中设置的临时占位符(place-holder),你可以对它发布回退(与回退整个事务处

理不同)。

MySQL使用下面的语句来标识事务的开始

输入

START TRANSACTION

使用ROLLBACK语句:

SELECT * FROM ordertotals;  #为了显示表中是有数据的
START TRANSACTION;       #事务开始
DELETE FROM ordertotals;  #删除表中所有的行
SELECT * FROM ordertotals; #显示是否已经删除表中的内容
ROLLBACK;  #回滚
SELECT * FROM ordertotals;  #最终表的数据还在

解析:其实这个就是为了测试事务处理的作用,其中ROLLBACK的作用就是,发生错误,恢复到 START TRANSACTION 语句以前的状态,因为START TRANSACTION 标志着事务的开始。

事务处理用来管理INSERT 、

UPDATE 和

DELETE 语句

。你不能回退SELECT 语句。(这样做也没有什么意义。)

不能回退

CREATE DROP 操作。事务处理块中可以使用这两条语句,但如果你执行回退,它们不会被撤销

使用COMMIT

START TRANSACTION;
DELETE FROM orderitems WHERE order_num = 20010;
DELETE FROM orders WHERE order_num = 20010;
COMMIT;

分析:

在这个例子中,从系统中完全删除订单20010 。因为涉及更新两个数据库表orders 和orderItems ,所以使用事务处理

块来保证订单不被部分删除。最后的COMMIT 语句仅在不出错时写出更改。如果第一条DELETE 起作用,但第二条失败,则

DELETE 不会提交(实际上,它是被自动撤销的)

使用保留点:

设置的第一个保留点

SAVEPOINT delete1;

#语法
#SAVEPOINT [点的名字];

可以在MySQL代码中设置任意多的保留点,越多越好。为什么呢?因为保留点越多,你就越能按自己的意愿灵活地进行

回退。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务