有临时表Temp客户端进程1:
执行的sql为:
insert Tempvalues(......);
select * from Temp;客户端进程2:
执行的sql为:
drop table Temp;--临时表也应该可以这样drop掉的吧进程1先于进程2执行,那么在进程1执行过程中(并发问题),如还在执行insert Tempvalues(......);时,进程2出现,那么进程2应该是被挂起的,对吗???:o 进程1:执行insert Temp values(......);select * from Temp;
的时候,oracle应该会给它共享的DDL锁,就阻止了进程2的drop DDL操作了,我只是猜测,希望高手给个确认

解决方案 »

  1.   

    一个session应该没有权限去访问另一个session创建的临时表的,所以第二个session执行drop table Temp;的时候应该会返回错误,不存在该表的
      

  2.   

    “一个session应该没有权限去访问另一个session创建的临时表的”???
    这个我不理解。会话2将无法DROP table,因为会话1正在使用该表。对于临时表,只有会话1没有使用该表,或者会话1使用完毕并且执行了truncate命令,会话2才能drop该表
      

  3.   

    xiaoxiao1984(笨猫儿)
    一个session应该没有权限去访问另一个session创建的临时表的,所以第二个session执行drop table Temp;的时候应该会返回错误,不存在该表的.
    --你用的是mssql的概念了会自动加锁,进程2报错.如果前台就应该要捕捉错误,稍后在提交,或提示使用者heyixiang(子豚の愛人) 是正确的.