coolmax 发表于 2009-06-10 09:53

关于临时表创建的问题

一般我在创建建表脚本的时候是这样用:
if exists(
   select 1 from sys.systable
   where table_name=‘T1’
   and table_type in ('BASE')
) then
    drop table T1
end if;
然后再create table,但是局部临时表该怎么办呢?我创建的临时表在sys.systable中没有发现有,不知道临时表是否有这样的相同的处理方式?!

chuxu 发表于 2009-06-10 10:34

局部l临时表是和进程相关的,当进程退出后临时表就被删除,所以应该不要做上述处理。

WFCJZ 发表于 2009-06-10 15:11

没有必要再DROP 所建的临时表

coolmax 发表于 2009-06-11 09:47

主要是在程序代码中,比如一个用户创建了一个临时表,另一个创建相同的名称的表,会不会有问题啊?

WFCJZ 发表于 2009-06-11 10:00

肯定有问题,表名不能重复.为什么要给一样的表名呢?难道是查询同一个数据,只是根不同用户看?

chuxu 发表于 2009-06-11 10:39

肯定不会重复。
加#的表系统其实会自动命名的。不可能重复。

coolmax 发表于 2009-06-11 16:49

貌似越来越有意思了哦,chuxu说的是真的吗?

chuxu 发表于 2009-06-11 17:03

你试试不就知道了,登陆2个dbisql,begin tran 然后select * into #table from table

[ 本帖最后由 chuxu 于 2009-6-11 17:20 编辑 ]

D_D_D_D 发表于 2009-06-11 20:25

chuxu正解,建表的时候表名加前加#是session级别的,只有自己在本次登录中可以已使用,但由于sybase会在表名后自动加___24324324,之类的东西,所以表名不能太长,否则会报错。

直接建在tempdb中的是共享临时表,除非删除或者服务器重启,否则大家都能访问。

dd 发表于 2009-06-16 14:55

我也存在同样的问题,是否create table #abc后,不需要drop table #abc
页: [1] 2
查看完整版本: 关于临时表创建的问题