临时表的生命周期有多长?

时间:2023-01-16 09:02:28
一个由Query执行的 Select ... into #.... from ....语句生成的#表的生命周期有多长?
当这个Query关闭之后,这个表仍在,
当这个Query所在的窗体关闭之后,这个表仍在
只到应用程序关闭,它才消失,

临时表的生命周期到底有多长?????????????

9 个解决方案

#1


一般是一次会话期间,当你的会话一直保持的时候表就一直存在。
对于共享数据库的程序使用临时表是危险的,因为尽管创建者不同,但是表的名字如果不特别区别的话总是一样的。因为你总是以一个数据库用户来连接所有的客户应用程序,如果别的客户没有退出数据库的话,数据库总认为这个会话还在连接,不会自动消除。这个是我在oracle中的经验,sqlserver不知道是否一样

#2


退出这个存储过程就结了;

#3


实际上在query执行完以后,临时表就应该完了,你说的情况应该是在delphi下,query把数据下到本地机上的现象!

#4


直到服务器重启。

#5


如果你是使用会话(事务)Transaction,那应该在Commit或者是RollBack之后,局部临时表就删除了,而且只针对当前会话有效;如果你没有使用事务控制语句,那应该是在程序退出之后。

#6


应该是在一个会话期间,一般是程序推出以后

#7


在Server的查询器中,换一个查询框都会提示临时表不存在

我用
try
  drop table #..
except

end;
Select ... into #.... from ....
可以解决问题,但我想确切的知道临时表的生命周期有多长?

#8


看你是局部临时表还是全局临时表了,
局部临时表的生命期就是调用进程的生命期,调用过程返回后,表就消失了.

#9


局部临时表

#1


一般是一次会话期间,当你的会话一直保持的时候表就一直存在。
对于共享数据库的程序使用临时表是危险的,因为尽管创建者不同,但是表的名字如果不特别区别的话总是一样的。因为你总是以一个数据库用户来连接所有的客户应用程序,如果别的客户没有退出数据库的话,数据库总认为这个会话还在连接,不会自动消除。这个是我在oracle中的经验,sqlserver不知道是否一样

#2


退出这个存储过程就结了;

#3


实际上在query执行完以后,临时表就应该完了,你说的情况应该是在delphi下,query把数据下到本地机上的现象!

#4


直到服务器重启。

#5


如果你是使用会话(事务)Transaction,那应该在Commit或者是RollBack之后,局部临时表就删除了,而且只针对当前会话有效;如果你没有使用事务控制语句,那应该是在程序退出之后。

#6


应该是在一个会话期间,一般是程序推出以后

#7


在Server的查询器中,换一个查询框都会提示临时表不存在

我用
try
  drop table #..
except

end;
Select ... into #.... from ....
可以解决问题,但我想确切的知道临时表的生命周期有多长?

#8


看你是局部临时表还是全局临时表了,
局部临时表的生命期就是调用进程的生命期,调用过程返回后,表就消失了.

#9


局部临时表