一个关于#临时表生存期的问题。

michaelpeng7799 2003-05-17 06:35:22
在存储过程A中CREATE TALBE #TMP 如果多个用户同时运行这个存储过程序,那会不会有冲突发生??? 
...全文
26 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
michaelpeng7799 2003-05-17
  • 打赏
  • 举报
回复
我说怎么找#找不到呢。
pengdali 2003-05-17
  • 打赏
  • 举报
回复
你可以用:
if object_id('tempdb..#temp') is not null drop table #temp
来判断是否存在并删除
pengdali 2003-05-17
  • 打赏
  • 举报
回复
对了,忘了问了,这种#临时表存在什么地方?##存在什么地方呢??

他们都在tempdb数据库中,##全局的你可以在企业管理器里看得到!
#应为是会话,所以你在查询分析器里建的,在企业管理器里看不到!
pengdali 2003-05-17
  • 打赏
  • 举报
回复
#局部临时表的生命周期的会话!!##全局临时表的生命周期是全局它是会冲突的!

你可以打开两个查询分析器,一个查询分析器的连接算是一个会话!
你分别创建两个同名的临时表是不会发生错误的!
而你别创建两个同名的全局临时表是会发生错误的!
happydreamer 2003-05-17
  • 打赏
  • 举报
回复
1、局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除。
2、全局临时表(##开头)对其它连接也有效,在当前连接和其他访问过它的连接都断开时自动删除。
3、不管局部临时表还是全局临时表,只要连接有访问权限,都可以用drop table #Tmp(或者drop table ##Tmp)来显式删除临时表。

michaelpeng7799 2003-05-17
  • 打赏
  • 举报
回复
对了,忘了问了,这种#临时表存在什么地方?##存在什么地方呢??
black_snail 2003-05-17
  • 打赏
  • 举报
回复
好像全局临时表是在SQL SERVER 数据库打开时一直有效
j9988 2003-05-17
  • 打赏
  • 举报
回复
不会,除非你用##TMP。
a1n1 2003-05-17
  • 打赏
  • 举报
回复
不要用本地临时表,用全局临时表CREATE TALBE ##TMP , SQL Server在所有用户断开连接后删除该表。
44290029 2003-05-17
  • 打赏
  • 举报
回复
,可能会,,不过,,在前面加一段付码,有这表就,删除在建,,就可解决

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧