gpt4 book ai didi

sql-server - 在 MS SQL Server 2005 中,当同一 SP 的不同执行访问临时表时会发生什么情况?

转载 作者:行者123 更新时间:2023-12-02 18:02:26 26 4
gpt4 key购买 nike

我有一个存储过程,它首先检查临时表(#temp_table),如果存在则删除它,使用该表,最后在完成后删除它。当用户执行某些操作来触发此 SP 时,该 SP 会被随机调用,并且有时 SP 可能会同时执行 - 或者有一些重叠。

假设我有 Exec1 和 Exec2 两个相同的 SP 创建、更改和删除 #temp 表,并且它们的运行时间相差几毫秒。

会发生什么? Exec1 会锁定 #temp_table 并且 Exec2 会在 Exec1 完成时等待吗?对于我来说,这显然是可取的。我不希望 Exec1 和 2 同时使用该表,也不希望 Exec2 失败,因为 Exec1 已经在使用该表。

[编辑]我应该将临时表转换为表变量吗?

最佳答案

在sql server中,如果你创建一个本地临时表,它是带有一个#符号的,sql server在后端使用一些下划线和一些ID。假设您在临时数据库中创建了一个名为 #Temp 的临时表,sql server 创建了一个名为 #Temp_______10912098 的表,在单独的连接中创建的每个临时表都会有其 on ID在名称的末尾。


TempTables

这些是在不同连接中创建的所有临时表,都具有名称#Temp,但附加了一些下划线和唯一id sql服务器用于区分它们.

关于sql-server - 在 MS SQL Server 2005 中,当同一 SP 的不同执行访问临时表时会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com