事务:简单理解就是一个完整事
事务的理解:
事务处理在各种管理系统中都有着广泛的应用,
比如人员管理系统,很多同步数据库操作大都需要用到事务处理。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,
再比如在银行转账的时候,用户a转出500,用户b收到500, 这两个事件都要成功才可以,如有一方失败则整个转账行为就失败。
这样,这些数据库操作语句就构成一个事务!
如果没有事务处理,在你删除的过程中,假设出错了,只执行了第一句,那么其后果是难以想象的!
但用事务处理。如果删除出错,你只要rollback就可以取消删除操作(其实是只要你没有commit你就没有确实的执行该删除操作)。
事物的四个特性:
1,原子性:
指整个数据库事务是不可分隔的工作单元。原子性确保在事务中的所有操作要么都发生,要么都不发生。
2,一致性:
一旦一个事务结束了(不管成功与否),系统所处的状态和它的业务规则是一致的。即数据应当不会被破坏。
3,隔离性:
指多个事务同时操作同一数据时,每个事务都有各自的完整数据空间。
4,永久性:
一旦事务完成,事务的结果应该持久化
数据库管理系统采用重执行日志来保证原子性,一致性,持久性。
数据库管理系统采用数据库锁机制来实现隔离性。
mysql 中默认事物是自动提交的。
set autocommit=1(true)(默认) 自动提交事物
set autocommit =0(false) 手动提交事物
commit 提交事物
rollback 回滚事物
savepoint 设置混滚点注意: 想要出现事物的回滚一定要 修改当前为“手动提交事物”
在我们最终commit之前,是可以rollback的,但是一旦commit了,就永久生效了,无法rollback
添加回滚点: savepoint 标记;
例: savepoint tag1;
返回回滚点: rollback to 标记;
例: rollback to tag1;
补充:
事务 能否支持手动 和当前数据库的引擎有关系 innnoDB 支持事务
ISAM: 不支持事务操作的
查看数据表引擎
show create table 表名;
修改单个数据表的引擎
alter table 表名 ENGINE =MyISAM;