事务
例子:
张利从银行取钱,这个过程在数据库操作中,我们可以看做两个步骤:1,从银行表取出钱;2,再加入张利表。
功能需求:
1.这两个步骤中任何一个步骤失败了,我们都应该回到操作前的初始状态。
2.这两个步骤都成功了,就算成功操作,数据库中应该变化。
功能实现原理:在我们的InnoDB表中,我们执行的SQL语句,都要先存入日志文件,然后再讲执行结果提交到服务器,完成整个操作。
我们这里就是将开始由MySQL所掌握的自动提交功能,转变为由我们操作的提交功能,来完成一组SQL语句成功后,才真实改变数据库的操作。
功能实现的语法:
1.SET @@autocommit = 0; (1,为自动提交;0,为手动提交)
COMMIT ; ROLLBACK;
2.START TRANSACTION ;启动事务
COMMIT;成功后提交
ROLLBACK;回到事务启动前的状态。
SAVEPOINT 点名;设置标记,用于使用ROLLBACK TO 点名 回滚到此点状态。
事务
特性:ACID
1.原子性(A):事务其实就是执行一组SQL语句,他们中只要有一条语句执行失败,整个事务都失败。
2.一致性(C):即在事务开始之前和事务结束以后,数据库的设定是一样的。
3.隔离性(I):当使用事务对数据进行操作时,我们另外的会话是无法对此条数据进行操作的。我们的InnoDB使用的是数据行锁。
4.持久性(D):当事务成功,数据将提交到数据库,数据就被持久化了。
例子:
张利从银行取钱,这个过程在数据库操作中,我们可以看做两个步骤:1,从银行表取出钱;2,再加入张利表。
功能需求:
1.这两个步骤中任何一个步骤失败了,我们都应该回到操作前的初始状态。
2.这两个步骤都成功了,就算成功操作,数据库中应该变化。
功能实现原理:在我们的InnoDB表中,我们执行的SQL语句,都要先存入日志文件,然后再讲执行结果提交到服务器,完成整个操作。
我们这里就是将开始由MySQL所掌握的自动提交功能,转变为由我们操作的提交功能,来完成一组SQL语句成功后,才真实改变数据库的操作。
功能实现的语法:
1.SET @@autocommit = 0; (1,为自动提交;0,为手动提交)
COMMIT ; ROLLBACK;
2.START TRANSACTION ;启动事务
COMMIT;成功后提交
ROLLBACK;回到事务启动前的状态。
SAVEPOINT 点名;设置标记,用于使用ROLLBACK TO 点名 回滚到此点状态。
事务
特性:ACID
1.原子性(A):事务其实就是执行一组SQL语句,他们中只要有一条语句执行失败,整个事务都失败。
2.一致性(C):即在事务开始之前和事务结束以后,数据库的设定是一样的。
3.隔离性(I):当使用事务对数据进行操作时,我们另外的会话是无法对此条数据进行操作的。我们的InnoDB使用的是数据行锁。
4.持久性(D):当事务成功,数据将提交到数据库,数据就被持久化了。