gpt4 book ai didi

sql-server - SQL Server 中的全局临时表何时被销毁?

转载 作者:行者123 更新时间:2023-12-03 02:30:35 25 4
gpt4 key购买 nike

我对全局临时表的用法感到困惑。我创建了一个全局临时表

// session 52:创建者 session

Create Table ##temp(i int) 
Insert Into ##temp(i) Values(1),(2),(3)
Select * From ##temp

// session 56

Select * From ##temp

// session 57:保存 ##temp 引用的最后一个 session

Select * From ##temp

现在,如果我关闭 session 52,##temp 表就会被破坏。

我相信全局临时表在以下情况下发布

  1. 它已被任何 session 明确删除
  2. 创建者 session 已关闭,并且没有其他 session 引用此 session 。

我对引用此 session (创建者 session )的 session 感到困惑这是什么意思?

最佳答案

来自CREATE TABLE :

Global temporary tables are automatically dropped when the session that created the table ends and all other tasks have stopped referencing them. The association between a task and a table is maintained only for the life of a single Transact-SQL statement. This means that a global temporary table is dropped at the completion of the last Transact-SQL statement that was actively referencing the table when the creating session ended

尽管作为个人挑剔,我在最后一句中使用了 after 而不是 when

因此,根据您的示例, session 57 会保留全局临时表,只要它实际上执行依赖于该表的语句。一旦该语句完成 - 因此 session 已转移到另一个语句或它处于空闲状态 - 全局临时表将被删除。

关于sql-server - SQL Server 中的全局临时表何时被销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24379036/

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