我有一个存储过程,该过程首先检查临时表(#temp_table),将其删除(如果存在),使用该表,然后在完成后将其删除。当用户执行某些操作来触发此SP时,会随机调用此SP,并且有时SP可能会同时或重叠执行。
可以说我有两个创建,更改和删除#temp表的同一个SP的Exec1和Exec2,它们彼此之间的运行时间均为毫秒。
会发生什么?Exec1是否会锁定#temp_table,而Exec2在Exec1完成时会等待?在我看来,这显然是可取的。我既不想Exec1&2都同时使用该表,也不想Exec2失败,因为Exec1已经在使用该表。
[编辑]我应该将临时表转换为表变量吗?
在sql server中,如果创建本地临时表,则使用单个#号sql server在后端使用一些下划线和一些ID。假设您#Temp
在temp db中创建一个名称为sql server的Temp表。创建一个具有name的#Temp_______10912098
表,在单独连接中创建的每个Temp表的名称末尾都将具有其on ID。
这些都是在不同连接中创建的临时表,所有临时表都具有名称,#Temp
但是附加了一些下划线,并且unique id
sql server用于区分它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句