我写了两程序A,B
TDatabase 的 Isolation 中 设置成 tiDirtyRead
1.A程序中使用一个事务 对指定的 123行进行更新,并且在没有提交之前,提出消息对话框,暂停程序2.B程序中对指定的 123行进行读,为什么必须要等A程序提交后才能读呀这样不就是 TDatabase 的Isolation 设置成 tiReadCommitted 了吗?

解决方案 »

  1.   


    表18.12 TransIsolation属性值的含义 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━   独立级别         含 义──────────────────────────────────────  tiDirtyRead      允许读由其它同时事务写入数据库的未提交的修改。未提交的             修改不是永久性的,可能在任何时候被复原。 在这个级别你             的事务与其它事务所做的修改具有最低独立度。  tiReadCommitted   只允许读由其它同时事务提交的数据库修改。这是缺省的独             立级别。  tiRepeatableRead  允许单个的数据库读事务无法看见其它同时事务对相同数据做 的修改。这个独立级别保证了你的事务一次读一个记录,记录 的视图不会改变, 在这个级别你的事务与其它事务做的修改完
      

  2.   

    各种数据库服务器可能不同程度地支持这些独立级别,或者根本不支持。 如果需要的独立级别不被服务器支持,那么Dephi将使用下一个更高的独立级别,如下表所示: 表18.10 各类服务器TransIsolation设置━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  独立级别     Oracle Sybase和     InterBase   Microsoft SQL──────────────────────────────────────Dirty Read Read Committed Read Committed Read CommittedRead Committed Read Committed Read Committed Read CommittedRepeatable read Repeatable read Not Supported Repeatable Read