MySQL中支持事务的存储引擎仅有InnoDB和DBD。
事务的四个特性:
原子性:
事务中所有操作视为一个原子单元,要不全部提交,要不全部回滚。
MySQL中的语句是默认提交的,因此想要满足原子性,MySQL中使用begin开始事务,当然用start transaction也是可以的(只不过我觉得begin好记),用commit结束事务,用rollback回滚事务。当结束事务或回滚事务后MySQL语句又恢复默认提交。
补充:(我并不喜欢这个方法)
MySQL语句可以通过
set autocommit=0
设置为禁止自动提交,但是这样的话每个SOL语句都作为事务处理,commit代表着旧事务的结束,同时也是新事务的开始。
一致性:
事务在完成时,必须是从一种一致性状态变为另一种一致性状态,所有变更都要应用于事务的修改,以确保数据的完整性。
隔离性:
一个事务中的操作语句所做的修改必须与其他事务所做的修改相隔离,使得当前事务不会查看到由另一个事务正好修改的数据。
这种特性通过锁机制实现。
持久性:
事务完成之后,所做的修改对数据的影响是永久性的,即使系统重启或系统故障仍然可以恢复。