mysql事务控制
?事务(Transaction)是指作为一个逻辑工作单元执行的一系列操作,这些操作要么全部成功MySQL 执行事务,要么 全部失败。事务确保对多个数据的修改作为一个单元来处理。
一、事务控制是什么 ?事务(Transaction)是指作为一个逻辑工作单元执行的一系列操作,这些操作要么全部成功MySQL 执行事务,要么 全部失败。事务确保对多个数据的修改作为一个单元来处理。 ? 在MySQL中,只有使用了Innodb存储引擎的数据库或表才支持事务。 ? 事务用于维护数据库的完整性,保证成批的sql语句要么都执行,要么都不执行。 ? 事务用于管理INSERT、UPDATE和DELETE语句。 例如,我在ATM机上给小王转账100元,在银行的业务系统中,主要会执行两步数据变更操作: ①从我的账户减去100元; ②给小王的账户增加100元。这里:如果操作①执行成功,操作②执行失败会发生什么情况?-----还是会失败! 二、事务的特性 ? 若数据库声称支持事务,那么该数据库必须具备ACID四个特性,即Atomicity(原子性)、 Consistency(一致性)、Isolation(隔离性)和Durability(持久性)。 三、事务控制 ? 默认情况下,MySQL是自动提交事务的,即每一条INSERT、UPDATE、DELETE的SQL语句提交 后会立即执行COMMIT操作。因此,要开启一个事务,可以使用start transaction或begin,或者 将autocommit的值设置为0。 MYSQL 事务处理主要有两种方法 1、用 begin, rollback, commit来实现 begin或/start transaction)开始一个事务 rollback事务回滚 commit事务确认 2、直接用 SET 来改变 MySQL 的自动提交模式: set autocommit=0禁止自动提交 set autocommit=1 开启自动提交 重要说明: 1.不管autocommit是1还是0 start transaction后,只有当commit数据才会生效,rollback后就会回滚。 2、当autocommit为 0 时 不管有没有 start transaction. 只有当commit数据才会生效,rollback后就会回滚。 3、如果autocommit为1 ,并且没有 start transaction. 调用rollback是没有用的。因为事务已经自动提交了。这个最需要注意了,因为在python和mysql中都是默认autocommit是1 其他事务命令 flag相当于定义这个保存点的名字 savepoint flag:savepoint允许在事务中创建一个保存点,一个事务中可以有多个savepoint ; release savepoint flag:删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常; rollback to flag:把事务回滚到标记点; set transaction:用来设置事务的隔离级别。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |