SET TRANSACTION ISOLATION LEVEL
{ READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SNAPSHOT
| SERIALIZABLE
}
[ ; ]
以前有些误区,最近了解了一下,一点心得
其实DB的文档已经写的很清除了,只要注意一下几点
1
切记DB的任何操作都是一个Transaction,READ COMMITTED 是默认等级,也就是说,一句SQL语句其实就是一个等级为READ COMMITTED的Transaction
2
在事务之间,对数据库的修改 - Update,Delete是绝对被保护的,也就是说,一个事务没有结束之前,另外一个事务是无法更改前一个事务已经更改的数据
之前自己以为的锁定某某记录,其实不是针对修改,而是针对读取的,这点是一个很大的误区
3
针对读取,参数的解释如下{ READ UNCOMMITTED 可以读取已由其他事务修改但尚未提交的行,相当于可以读取任何的数据
| READ COMMITTED 只能读取已由其他事务修改并提交的行,当然,不在事务之中的数据肯定也能读;感觉完全是一种自我约束
| REPEATABLE READ 读取权限如READ COMMITTED;如果本身已经读取的行,其他的事务不能再修改,但可以新增
| SNAPSHOT
| SERIALIZABLE 读取权限如READ COMMITTED;如果已经读取的行,其他的事务不能再修改,不能再新增