SQL Server / Oracle:私有临时表

2023-11-27

在 Oracle 中,您可以使用以下命令创建临时表:

CREATE GLOBAL TEMPORARY TABLE temp_table (
    field1 NUMBER,
    field2 NUMBER
)
ON COMMIT DELETE ROWS;

...这可能非常漂亮,因为这会创建一个对每个人都可见的表,但是插入表中的数据只有他或她可见。此外,该数据会在事务或会话结束时自动删除(取决于其声明),而不会损害其他人的临时数据。

但是,在 SQL Server 中,您可以使用以下命令创建临时表:

CREATE TABLE #temp_table (field1 INT, field2 INT);

...据我了解,它在功能上与 Oracle 的实现有本质上的不同。该临时表仅对您可见,并且在使用后立即删除(该表)。

SQL Server 是否有能力模仿上述 Oracle 行为?或者处理临时数据的唯一方法是必须在每次工作迭代中重复创建临时表?


正如您所发现的,SQL Server 和 Oracle 临时表有根本的不同。

在 Oracle 中,全局临时表是存储临时会话特定(或事务特定)数据的永久对象。

在 SQL Server 中,临时表是存储临时数据的临时对象,#temp_tables 存储会话本地数据,##temp_tables 存储全局数据。 (我从来没有需要过 SQL Server 全局临时表,也不知道它们解决了什么问题。)如果 #temp_table 是在存储过程中创建的,那么当存储过程退出时,它将被删除。否则,当会话关闭时,它将被删除。

不,确实没有办法让 SQL Server 模仿 Oracle。您可以使用带有额外列来存储会话 ID 的普通表。但是您不会获得临时表在减少日志记录方面的优势。您必须手动删除临时数据。并处理清理过早退出的会话。

EDIT:Oracle 和 SQL Server 之间的另一个区别是 SQL Server 允许将 DDL 与其他语句包装在事务中。因此,如果您需要使用临时表作为较大事务的一部分,create table #table_name...语句不会像 a 那样隐式提交当前事务create tableOracle 中的语句。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server / Oracle:私有临时表 的相关文章

  • 创建表作为 select 删除 postgresql 中的非空约束

    在 postgres sql 中 创建表时 select 删除了表上的非空约束 例如 对此没有单一命令的解决方案 要基于现有表 包括所有约束 创建表 请使用 create table B like a including constrain
  • 如何以最少的查询次数获取帖子列表和关联标签

    我的表格结构如下 标签 更多的是一个类别 id 标签名称 描述 slug POSTS ID 标题 网址 邮戳 id idPost idTag USERS ID 用户名 userSlug VOTES id idPost idUser 每个帖子
  • 恢复 SQL Server 数据库 - 主密钥未打开

    我必须制作远程 SQL Server 数据库的本地副本 我通过使用 Management Studio 中的 任务 gt 备份 来完成此操作 然后 我在本地恢复了备份 该备份似乎包含了所有内容 表 用户 对称密钥和证书 当我尝试执行需要打开
  • 如何有效地从 DB2 表中删除所有行

    我有一个大约有 50 万行的表 我想删除所有行 如果我做简单的delete from tbl 事务日志已满 我不关心这种情况下的事务 无论如何我都不想回滚 我可以删除许多事务中的行 但是有更好的方法吗 如何有效地从 DB2 中的表中删除所有
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • 获取家庭成员

    假设以下家庭 其构建架构是 create table PersonConn child int parent int insert into PersonConn values 1 2 insert into PersonConn valu
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • 连接两个表的查询的 SQL Server“FOR XML”输出

    我是 SQL Server 中 FOR XML 功能的新手 我正在使用 SQL Server 2012 我有两个表 Word 和 Word Expansion 样本数据 表 字 WordOID Word 1 PIPE 2 WIRE 表 Wo
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • 如何在使用连接池时强制 SqlConnection 物理关闭?

    我明白 如果我实例化一个 SqlConnection 对象 我实际上是从连接池中获取一个连接 当我调用 Open 时 它将打开连接 如果我对该 SqlConnection 对象调用 Close 或 Dispose 方法 它将返回到连接池 但
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • REgex从oracle中的字符串中获取数字

    我有以下格式的字符串 阿克拉姆 88 jamesstree 20140418 阿克兰 8 约翰街 20140418 阿克兰 888 johnstreet 20140418 现在我只想检索 88 8 和 888 值 我为此编写了以下查询 SU
  • Oracle - 使用 DBMS_MVIEW.REFRESH 刷新“REFRESH FORCE ON DEMAND”视图时会发生什么

    我有以下物化视图 CREATE MATERIALIZED VIEW TESTRESULT ON PREBUILT TABLE WITH REDUCED PRECISION REFRESH FORCE ON DEMAND WITH PRIMA
  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如
  • Oracle TDE 能否保护数据免受 DBA 的侵害?

    甲骨文专家 我的客户想要部署一个必须在数据库中保存信用卡号的应用程序 客户显然很关心安全性 我们特别关注一个令人痛苦的问题 我们如何确保只有具有 业务需要知道 的授权用户才可以访问数据 我们如何保护数据免受 DBA 的侵害 一个明显的解决方
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和

随机推荐

  • 如何设置 Filezilla Pro 来访问我的 s3 存储桶?

    我购买了支持 Amazon S3 的 Filezilla Pro 请问如何设置 Filezilla Pro 访问我的存储桶 谢谢 对上述答案的一个重要补充 我的 S3 用户名和密码是什么 用户名 访问密钥 最好是仅具有访问特定 S3 存储桶
  • iPhone SDK 与静态库链接错误

    我已经构建了自己的静态库 其中包含要在项目中重用的组件 最近需要更新一堆类 具体来说 由于某些类更改了名称 某些方法的签名也发生了更改 现在发生的情况是 该库本身可以正常编译 但是 当添加到应用程序项目时 该项目无法链接 Ld build
  • javascript - 获取函数内异步函数的返回数据

    我遇到问题 因为 chrome api 函数是异步的 我无法获取其返回值 考虑以下代码 我正在使用 AngularJS scope storageGet function param var returnData chrome storag
  • 使用 itextsharp 阅读 PDF,其中 PDF 语言为非英语

    我正在尝试阅读thisPDF 使用 C 中的 itextsharp 将此 pdf 转换为 word 文件 它还需要维护Word中的表格格式和字体 当我尝试使用英语 pdf 时 它会完美工作 但使用一些印度语言 如印地语 马拉地语 时 它不起
  • jqgrid 添加行并将数据发送到 webservice 进行插入

    我已经能够使用 jQuery Ajax 将数据从 Web 服务中提取到 jQGrid 中 现在我想将添加 编辑的数据发送回网络服务 我已经看过一些使用 PHP 和 editurl 命令的示例 这也适用于网络服务吗 就像我最初提取数据的方式一
  • 使用 Reactive Banana 进行一些基本微积分

    Setup 我正在使用 Reactive Banana 和 OpenGL 并且我有一个想要旋转的齿轮 我有以下信号 bTime Behavior t Int the time in ms from start of rendering bA
  • SwiftUI UITextView 协调器不工作

    我包了一个UITextView in a UIViewRepresentable并包括一个Coordinator as UITextViewDelegate 但事件未被调用 我究竟做错了什么 struct TextView UIViewRe
  • Session ID 是在服务器端还是客户端生成的?

    这个网页http www w3schools com ASP prop sessionid asp表明会话 ID 是在服务器端生成的 如果是这种情况 那么服务器如何知道它在第二个请求响应周期仍然是同一个客户端 SessionId 肯定会在客
  • 安装 CMake 库:还为依赖项提供查找模块?

    我的 CMake 库 MyLibrary 具有依赖性OtherLibrary 我用一个导入非标准 FindOtherLibrary cmake 我的图书馆取决于OtherLibrary公开 target link libraries MyL
  • MVC4 区域和表单身份验证

    我有一个设置了多个区域的 MVC4 应用程序 每个区域必须有自己的登录页面 举例来说 我有以下领域 主要的 行政 如何设置才能使 主要 区域与 管理 区域具有不同的登录页面 我认为 web config 不是解决这个问题的方法 目前我的根
  • 如何在没有嵌套订阅的情况下订阅命令执行信号的完成?

    我尝试了以下操作但没有成功 等效使用 subscribeNext 按预期工作 A viewModel loginCommand executionSignals flatten subscribeCompleted NSLog A 我唯一的
  • 如何在r中从类别转换为数字

    这是我的问题 我有一个包含类别的表格 我想对它们进行排名 category dog cat fish dog dog 我想要的是添加一列并对它们进行排名 category rank dog 1 cat 2 fish 3 dog 1 dog
  • 使用 GHC 的 API 或提示从已编译的二进制文件导入已知函数

    我有一个模块Target 有一个函数Target accessMe在里面 我以某种方式编译这个模块 然后删除源代码 现在 我必须执行哪些神秘咒语才能动态导入不同的程序Target accessMe 这个程序知道accessMe提前输入 另外
  • 为什么 LuaJIT 在 64 位平台上的内存限制为 1-2 GB?

    在 64 位平台上 LuaJIT 最多只允许 1 2GB 的数据 不包括分配的对象 malloc 这个限制从何而来 为什么这个限制比 32 位平台上的还要少 LuaJIT 被设计为使用 32 位指针 在x64平台的限制来自于使用mmap和M
  • 使用 super 的正确方法(参数传递)

    所以我正在关注Python 的超级危害 并去测试他的例子 然而 示例1 3 这应该显示正确的调用方式super处理时 init 需要不同参数的方法 完全不起作用 这就是我得到的 python example1 3 py MRO E C A
  • 在 apache+mod_wsgi 下运行 subprocess.Popen 总是返回错误,返回码为 -6

    我希望有人看到这个 我正在运行 django compressor 利用 lessc 设置将 less 渲染 压缩到文件的 CSS 中 当从开发服务器调用时 它工作得很好 但是当在 apache mod wsgi 下运行时 它始终返回错误
  • 在 PostgreSQL 中使用 crosstab() 时引号不正确

    我有一张桌子t1如下 create table t1 person id int item name varchar 30 item value varchar 100 该表中有5条记录 person id item name item v
  • 如何将任何数据类型更改为字符串?

    如何在 Python 中将任何数据类型更改为字符串 myvariable 4 mystring str myvariable 4 另外 或者尝试 repr mystring repr myvariable 4 这在Python中称为 转换
  • 如何在Azure Functions中实现指数退避?

    如何在Azure Functions中实现指数退避 我有一个依赖于外部 API 的函数 我想使用重试策略来处理此服务的不可用性 当队列中出现新消息时会触发此功能 在这种情况下 此策略默认开启 对于大多数触发器 当函数执行期间发生错误时 没有
  • SQL Server / Oracle:私有临时表

    在 Oracle 中 您可以使用以下命令创建临时表 CREATE GLOBAL TEMPORARY TABLE temp table field1 NUMBER field2 NUMBER ON COMMIT DELETE ROWS 这可能