日期:2014-05-18  浏览次数:21046 次

数据库事务问题,IsolationLevel 的值都代表什么意思
以下节选自MSDN:
IsolationLevel 枚举  
指定连接的事务锁定行为。 

 Chaos 无法改写隔离级别更高的事务中的挂起的更改。  
 ReadCommitted 在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。  
 ReadUncommitted 可以进行脏读,意思是说,不发布共享锁,也不接受 独占锁。  
 RepeatableRead 在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻像行。  
 Serializable 在 DataSet 上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。  
 Snapshot 通过在一个应用程序正在修改数据时存储另一个应用程序可以读取的相同数据版本来减少阻止。表示您无法从一个事务中看到在其他事务中进行的更改,即便重新查询也是如此。  
 Unspecified 正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。 
当使用 OdbcTransaction 时,如果不设置 IsolationLevel 或者将 IsolationLevel 设置为 Unspecied,事务将根据基础 ODBC 驱动程序的默认隔离级别来执行。

  小弟初涉数据库,很多概念都不懂,大家请根据自己的实际经验,谈谈对上述红字的理解,最好通俗,准确。

------解决方案--------------------
http://blog.csdn.net/cuijian_ok/archive/2005/03/17/322397.aspx
------解决方案--------------------
这个不就是锁类型吗?

当你查询数据的时候 设置只读<别人此时也可查询同样的数据,但是也只能用只读方式>、写<独占、连接后别人用任何方式都不能查询、修改 需要等你你结束之后>

------解决方案--------------------
结束的时候要解锁~
否则 下次操作此数据时将无限等待
这些是以前学Orlace时 看到的 不知道是不是你问的这个 因为看起来很象 呵呵
------解决方案--------------------
主要就是针对多用户同时操作数据库时可能出现的一些情况
针对不同的业务逻辑使用
默认的是ReadCommitted