关于临时表创建的问题
一般我在创建建表脚本的时候是这样用: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中没有发现有,不知道临时表是否有这样的相同的处理方式?! 局部l临时表是和进程相关的,当进程退出后临时表就被删除,所以应该不要做上述处理。 没有必要再DROP 所建的临时表 主要是在程序代码中,比如一个用户创建了一个临时表,另一个创建相同的名称的表,会不会有问题啊? 肯定有问题,表名不能重复.为什么要给一样的表名呢?难道是查询同一个数据,只是根不同用户看? 肯定不会重复。
加#的表系统其实会自动命名的。不可能重复。 貌似越来越有意思了哦,chuxu说的是真的吗? 你试试不就知道了,登陆2个dbisql,begin tran 然后select * into #table from table
[ 本帖最后由 chuxu 于 2009-6-11 17:20 编辑 ] chuxu正解,建表的时候表名加前加#是session级别的,只有自己在本次登录中可以已使用,但由于sybase会在表名后自动加___24324324,之类的东西,所以表名不能太长,否则会报错。
直接建在tempdb中的是共享临时表,除非删除或者服务器重启,否则大家都能访问。 我也存在同样的问题,是否create table #abc后,不需要drop table #abc
页:
[1]
2