【发布时间】:2013-11-09 08:36:52
【问题描述】:
我有一个存储过程,它首先检查临时表 (#temp_table),如果存在则将其删除,然后使用该表,最后在完成后将其删除。当用户执行某些操作来触发它时,该 SP 会被随机调用,并且有时该 SP 可能会同时执行 - 或有一些重叠。
假设我让同一个 SP 的 Exec1 和 Exec2 创建、更改和删除 #temp 表,并且它们彼此在几毫秒内运行。
会发生什么? Exec1 会锁定 #temp_table 并且 Exec2 会在 Exec1 完成时等待吗?在我的情况下,这显然是可取的。我不希望 Exec1 和 2 同时使用该表,也不希望 Exec2 失败,因为 Exec1 已经在使用该表。
[编辑] 我应该将我的临时表转换为表变量吗?
【问题讨论】:
标签: sql-server temp-tables table-locking