请问:TDATABASE 的属性 DATABASENAME 与 SESSION 和 事务 有什么关系吗???
      有两个TDATABASE 假设他们的DATABASENAME 为 D1 D2,他们指向一个相同的ORACLE数据库,那么如果D1给某张表加锁后 
     (加锁方式:LOCK TABLE tablename IN EXCLUSIVE MODE),那么,此时(加锁后)D2 还可以访问加锁的表么?
      为什么?
      求指点~   谢谢大家

解决方案 »

  1.   

    tdatabase这东东太没用过,貌似已经被ado替代了吧
    作为替代品的adoconnection控件自己默认有事物,例如adoquery打开创建事物 执行完毕立即commit事物,另外adoconnection可以创建事物数据库的锁有很多种
    共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。 
    更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁排它 (X) 用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。
    --你代码中的锁就是这个类型
     
    意向锁 用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX) 以及与意向排它共享 (SIX)。 
    架构锁 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。 
      

  2.   


    头像真可爱 先赞一个
    但是 我们这边是在改一个98年的软件  换新控件的话怕是要吐血了
    排它锁 和 共享锁 的话我理解,学校里讲的还是比较透彻的(今年刚毕业,JAVA专业分来做DELPHI,无奈。。)
    我不明白的是两个TDATABASE指向同一个ORACLE数据库,那为什么还要改来改去的??
    QUERY以TDATABASE1给表加锁后,以TDATABASE2就不能READ了,只能等待自己释放那个排它锁,程序就死在那里了。
    很郁闷的
    所以想问问TDATABASE和事务有什么关系,不同的TDATABASE产生的事务不同?
    但是是同一个控件QUERY发出的请求阿(自己加X锁,自己又申请READ)
    求解 T_T