问题标签 [global-temp-tables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
308858 浏览

sql-server - SQL Server 中的本地和全局临时表

SQL Server 中的本地临时表和全局临时表有什么区别?

0 投票
3 回答
6664 浏览

sql - MS SQL 临时表

我想知道,这两个脚本有什么区别?

还有这个

0 投票
2 回答
9886 浏览

tsql - 从 sp_executsql 插入临时表

通常,我正在构建使用 sp_executsql 执行的动态 SQL 语句,如下所示:

我需要在某些东西(表变量或临时表)中插入返回结果行集,但出现以下错误:

执行此操作后:

从我读过的内容来看,我认为问题是因为我没有指定临时表的列,但我无法做到这一点,因为返回列数不同。

我读过我可以使用全局临时表,但我以前做过这个,想知道是否有其他方法可以做到这一点。

0 投票
1 回答
2861 浏览

java - 从具有“on commit delete rows”命令的全局临时表中获取数据

我有一个名为 TEST_FUNCTION 的 sql 函数,它在调用时将数据发布到名为 GLOBAL_TEMP 的全局临时表中。当我调用该函数时,如果数据发布到 GLOBAL_TEMP 表,它会返回字符串“SUCCESS”。然后,当我从 GLOBAL_TEMP 表中选择数据时,它没有提供任何数据。据我所知,我必须保持同一个会话,该会话用于调用函数 TEST_FUNCTION 以访问 GLOBAL_TEMP 表中的数据,因为它是使用commit delete rows命令创建的。

我的问题是如何在 java 代码中处理这个问题?(在 java 中保持相同的 ORACLE 会话来访问数据)

0 投票
3 回答
32564 浏览

c# - 如何查看sql server中代码创建的临时表?

##TheTable我使用 C# 代码创建了一个全局临时表(即)。代码完全运行后,我希望能够在 SQL Server Management Studio 中看到该临时表。

是否有可能做到这一点 ?如果是,那么如何?

0 投票
0 回答
344 浏览

sql - 使用全局临时表时如何避免竞争条件并保持参考

我的一个 SP 中有以下逻辑:

这个问题的答案表明检查if object_id(,但我有这些担忧:

1)从竞争条件的角度来看,这个检查线程安全吗?具体来说,我需要使用sp_GetAppLock/sp_ReleaseAppLock吗?

2) if 条件是否保留表上的参考##val?具体来说,由于不存在 ##val 表,所有其他会话是否有可能在条件 生成语句##val的否定结果失败后立即释放引用?如果是的话,如何在不锁定该表中的行的情况下保留和保持当前会话的引用。ifinsert##val

0 投票
1 回答
1181 浏览

c# - 无法从 C# 中选择全局临时表 (##TempTable)

当我尝试从 win 表单应用程序中选择全局临时表时,我可以从任意数量的客户端读取该表,当我从 Windows 服务中托管的 WCF 服务中执行相同操作时,我收到错误消息,指出 对象名称无效'# #MyTempTable'。

同时我可以使用相同的代码从winform中选择表格,有人能解释一下可能的原因吗?

  1. 从数据适配器 dll 调用 SP
  2. 数据适配器 (WCF) 服务在服务启动时加载此 ada 适配器 dll
  3. 另一个 WCF 服务向 DA 服务请求数据以在 Web 客户端中显示数据
  4. DA 服务作为 NT AUTHORITY\NetworkService 托管在 Windows 服务中
  5. winform 和 dll 中使用的连接字符串是 "conString = "Data Source=.\;" + "Initial Catalog=myDB;" + "Integrated Security=SSPI;";" 我也尝试在连接字符串中传递 Sa 凭据,但行为仍然相同。

我试图从 dll 执行的操作可以从 win 表单完成,而我无法从 WCF 服务使用的 dll 执行。

0 投票
2 回答
8078 浏览

oracle - 复合触发器中的“ORA-14450:尝试访问已在使用的事务临时表”

我有一张表可以为一个帐户保存许多记录:不同的金额。

每次插入/更新/删除此表中的记录时,我们都需要评估总量,以便知道是否应该触发事件(通过将数据插入另一个表)。金额是根据此表中存在的记录总和(每个帐户)计算的。

金额的计算应该使用记录的新值,但我们还需要旧值来检查某些条件(例如旧值是 X - 新值是 Y:如果 [X<=threshold and Y>threshold] then trigger事件通过将记录插入另一个表)。

所以为了计算和触发事件,我们在这个表上创建了一个触发器。像这样的东西:

问题是语句 1. 引发以下错误:“ORA-04091:表正在变异,触发器/函数可能看不到它”。

我们尝试了以下但没有成功(相同的异常/错误)来选择所有 rowId 与当前 rowId 不同的记录:

为了将数量计算为当前行旁边所有行的数量之和 + 当前行的数量(我们在触发器的上下文中拥有)。

我们搜索了其他解决方案,我们找到了一些,但我不知道它们中的哪一个更好,它们每个的缺点是什么(尽管它们在某种程度上相似)

  1. 使用复合触发器

  2. http://www.oracle-base.com/articles/9i/mutating-table-exceptions.php

  3. http://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551198119097816936

为了避免基于解决方案 1 和 2 的“表正在变异”错误,我将复合触发器与全局临时表结合使用。

现在我们有一个复合触发器,它使用一些全局临时表来存储来自 :OLD 和 :NEW 伪记录的相关数据。基本上我们做接下来的事情:

使用的全局临时表是使用选项“ON COMMIT DELETE ROWS”创建的,这样我可以确保在事务结束时清除该表中的数据。然而,这个错误发生了:'ORA-14450:试图访问一个已经在使用的事务临时表'。

问题在于该应用程序使用分布式事务,并且在 oracle 文档中提到:“将全局临时表 (GTT) 与分布式或 XA 事务结合使用时,可能会报告各种内部错误。......

在任何分布式事务中不支持临时表,因此 XA 协调事务。最安全的选择是不在分布式或 XA 事务中使用临时表,因为官方不支持在这种情况下使用临时表。...

如果数据库中只有单个分支事务使用全局临时表,则可以安全地使用它,但如果存在环回数据库链接或涉及多个分支的 XA 事务,则可能会出现问题,包括按照错误 5344322 的块损坏。”

值得一提的是,我无法避免 XA 事务或在作为触发器主题的同一张表上进行 DML(修复数据模型不是可行的解决方案)。我尝试使用触发器变量而不是全局临时表 - 一个集合(对象表),但我不确定这种方法。分布式事务是否安全?

在这种情况下,哪些其他解决方案适合解决初始问题:'ORA-04091:表名正在变异,触发器/函数可能看不到它',或第二个:'ORA-14450:尝试访问事务临时表已经在使用'?

0 投票
2 回答
1492 浏览

java - Java中的多线程导致表锁

我正在使用 batchUpdate 插入 Oracle 表。五个不同的并行线程正在调用 batchUpdate 方法以插入单个表。表是全局临时表类型。

程序执行未完成,建立数据库连接后卡住。

多个线程在单个全局临时表上操作会导致表锁定并保持程序的执行吗?

我可以使用以下查询查看锁定的表 -

0 投票
2 回答
1089 浏览

sql - SQL Server 全局临时表锁定

如何在由SELECT INTO语句创建和填充的存储过程中锁定全局临时表?例如:

执行此存储过程以生成报告,它存在于每个客户端数据库中(每个客户端使用不同数据库的多租户架构)。当同时生成报告时,我不希望在客户端之间共享此全局临时表中的数据。我别无选择,只能使用全局临时表,因为我使用它使用 PIVOT 动态生成列。