插入触发器是否需要提交语句

2024-04-28

这是实际场景的简化;在哪里可以看到表 B 上缺失的记录。

假设有两个数据库表 A ; B.

表 A 上有一个插入触发器;它对表 B 进行插入(但它没有 COMMIT;)。 如果我们通过 JDBC 连接器打开数据库连接;并对表 A 进行插入;并提交; 触发器的行为是什么? B表的insert语句会自动提交吗?


触发器不仅不需要 COMMIT,而且还不能放入 COMMIT:如果主体的代码包含 COMMIT(或回滚),触发器将无法编译。

这是因为触发器在事务期间触发。当触发器触发时,当前事务仍未完成。当 COMMIT 终止事务时,允许它们进入触发器会破坏工作单元。

因此,触发器中执行的更改由发出触发触发器的 DML 的所属事务提交(或回滚)。


确实,触发器可以在 PRAGMA AUTONOMOUS_TRANSACTION 下运行,在这种情况下它们必须有一个 COMMIT。但这是一种边缘情况,因为 Oracle 中嵌套事务的有意义的用途很少。

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

插入触发器是否需要提交语句 的相关文章

  • 从集合类型 Oracle 12c 插入表 - ORA-00902: 无效数据类型

    我正在使用 Oracle 12 1 我以为我可以查询 12c 中的表类型 当我尝试执行此包时 我收到错误 ORA 00902 无效数据类型 我什至尝试使用强制转换多重集 但仍然出现同样的错误 我知道我们可以在数据库级别创建对象然后查询 但我
  • Oracle:在更新具有多列的表的一个字段时复制行

    有没有一种方法可以一般复制一行 特别是在不指定所有列的情况下 在我的情况下 我有一个大表 我想在其中复制除 ID 和另一列之外的所有列 事实上 数据是在年初复制的 该表有 50 多列 因此如果我不必指定所有列 则更改架构会更加灵活和稳健 这
  • SQLPLUS 保存到文件

    我必须为我的数据库类使用 SQLPLUS 我们的第一个作业是简单的保存 我按照说明进行操作 我正在使用 PuTTY 访问 sqlplus 在本练习中使用以下 SQL 命令 并尝试使用 SAVE 和 SPOOL 命令将 SQL 命令和输出保存
  • 如何使用过程填充数据库

    我有大约 15 个不同的表 其中填充了不同的数据和不同的实体关系 我需要创建一个脚本 用这些表的内容填充我的数据库 脚本完成后 我使用 sqlplus 在 cmd 中运行它 然后使用 START文件路径 我有两个不同的 sql 文件 一个名
  • oracle 计算两个字符串中连续匹配的单词

    我想要一个返回两个字符串中单词的顺序匹配数的查询 例子 Table Id column1 column2 result 1 foo bar live foo bar 2 2 foo live tele foo tele 1 3 bar fo
  • 了解 Mac 上的 Oracle Java

    我在 OS X 上使用 Java 很多很多年了 最近当 Apple 停止默认包含 Java 时 我放弃了操作系统并为我安装了它 当然是 Apple 的版本 现在我使用的是 OS X 10 8 并且需要安装 Java 7 因此我刚刚获得了 D
  • sql 查询查找匹配属性

    我目前正在做一个类似易货系统的系统 情况是这样的 客户 Jasmine 要求输入 NAME 属性 她需要寻找的内容 并输入 SEEK 属性 她需要寻找的内容 为了获得结果 SEEK 属性必须与其他客户的 Name 属性匹配 其他客户的 SE
  • 向其他用户授予对 v$session 的 SELECT 访问权限

    我想将 v session 的 SELECT 访问权限授予其他用户Oracle Database 11g Enterprise Edition Release 11 2 0 1 0 64bit Production 但是当我运行这个查询时
  • 在 JDBC PL/SQL 块中多次使用命名参数时出错

    当使用命名参数调用 PL SQL 块时出现错误 当所有命名参数仅使用一次时 我的代码工作正常 但是当我复制标有 SQL 的 SQL 时 然后所有命名参数 以冒号开头 q 都使用了两次 现在我得到一个 SQL 异常 它说 参数名称的数量与注册
  • 获取 Oracle JDBC 连接上的 MySQL 错误堆栈跟踪

    我在使用连接字符串进行 Oracle JDBC 连接时遇到非常奇怪的错误 我将用户名指定为 sys 应该是 sys as sysdba 理想情况下 它应该来自 ojdbc6 jar 但就我而言 它来自 mysql connector jav
  • 创建每 5 分钟刷新一次的物化视图

    我创建了一个每 5 分钟刷新一次的物化视图 但是当我在物化视图上插入并执行选择时 我会得到相同的旧数据吗 需要手动刷新吗 CREATE MATERIALIZED VIEW MVW TEST REFRESH FORCE ON DEMAND S
  • 相当于 Oracle 的 SQL*Plus 中 MySQL 的 \G

    在 Oracle 的 SQL Plus 中 SELECT 的结果以表格方式显示 有没有办法以键值方式显示一行 例如MySQL的 G option http slaptijack com software enabling vertical
  • 具有多个数据源的 Tomcat 6/7 JNDI

    当有多个时
  • 神秘的 getClobVal()

    我有一个表 AKADMIN 其中包含 XMLTYPE 列 其名称为 XML 我想在该列中使用 getClobVal select t xml getClobVal t xml getClobVal t xml getClobVal as c
  • Oracle group by 中的字符串聚合

    我已经形成了一个大型查询 它使用以下数据条件获取大型数据集 Column1 Column2 M1 OTH M1 HHM M1 RES M2 HHM M2 RES M3 OTH M3 RES 我需要将其形成为 M1 OTH HHM RES M
  • 如何对Oracle进行SQL注入

    我正在对一个系统进行审计 开发人员坚称该系统可以防止 SQL 注入 他们通过去掉登录表单中的单引号来实现这一点 但后面的代码没有参数化 它仍然使用字面 SQL 如下所示 username username Replace var sql s
  • SQL:两个没有完整列匹配的表的并集

    我有一个table A其中有一组列A1 A2和一个具有一组列的 table bB1 B2 碰巧的是A2 B1但其余列不匹配 也不应该匹配 我想附加表格 所以我使用UNION ALL 对于不匹配的列 我使用null as COLUMN NAM
  • 将游标中的数据合并为一个

    我有一个存储过程 它多次执行另一个存储过程 我需要联合并返回数据 这是在执行第二个过程后得到的 我可以以某种方式将多个游标中的数据合并到另一个游标中吗 没有临时表或类表数据类型是否可能 编辑 联合的游标计数实际上是 n 其中 n 是 1 2
  • 用C++连接oracle数据库

    我正在寻找一种方法来连接到远程 Oracle 数据库并从 C 控制台应用程序中的表中读取一些数据 有人可以给我一些提示吗 谢谢 soci http soci sourceforge net http soci sourceforge net
  • 如何比较表中最后一个和倒数第二个条目的值?

    我在 Oracle 中有一个名为quotes 的表 其中包含两列 date 和value 我想比较表中最后一个条目和倒数第二个条目的值 在此示例中 我想获取日期13 1 和 11 1在一行中以及每个日期的值之间的差异 10 5 5 报价表

随机推荐

  • Delphi是否存在无锁队列“多个生产者-单个消费者”?

    我发现了几个针对单个生产者 单个消费者的实现 但没有找到多个生产者 单个消费者的实现 Delphi是否存在 多个生产者 单个消费者 的无锁队列 无锁队列全线程库 http otl 17slon com支持多个生产者 您可以将它与线程库分开使
  • #region 描述编译到.net 中的.exe 中?

    region endregion 指令 描述 是否编译到 NET 中的 EXE 中 我知道注释不是 但我经常在一个区域内对代码组进行分块并给出有用的描述 我想确保这些描述在我编译的代码中不可见 我不是在寻找混淆信息 不过 谢谢 不 他们不是
  • 包括 pandas groupby 聚合中缺失的值组合

    Problem 在 pandas groupby 聚合的输出中包括所有可能的值或值的组合 Example 示例 pandas DataFrame 有三列 User Code and Subtotal import pandas as pd
  • 链接的 ostream 内部行为及其在 MSVC 上的结果(与 Clang 相比)

    MSVC 与 GCC Clang 的流 内部字符串和操作排序问题 大家好 我最近刚刚开始更认真地使用 MSVC 来完成我的一个跨平台项目 同时通过以下方式测试输出chainedSTD 流 IE 一系列的obj foo lt lt endl
  • 让 clang-tidy 修复头文件

    我正在将当前使用 gcc 编译的项目移至 clang 并有一堆 gcc 没有生成的警告 Winconsistent missing override clang tidy致力于修复这些错误 cpp文件 但是它不触及hpp文件 因为在数据库中
  • 本地门控签入失败,并显示“无法找到搁置集...无法签入”

    我在使用新的 TFS 2015 Update 2 门控版本时遇到问题 在尝试签入门控构建队列后 构建的每个部分都会成功 直到到达 签入门控更改 的最后一步 当我查看该步骤的日志时 我得到 Error The shelveset Build
  • 如何在 C++ 中检查文件是否已被另一个应用程序打开?

    我知道 有is open C 中的函数 但我希望一个程序检查文件是否尚未被另一个应用程序打开 有没有办法使用标准库来做到这一点 编辑 在答案中澄清这是针对 Linux 应用程序的 不仅标准库没有这个功能 一般来说也是不可能的 你可以 在li
  • 如何在 CFscript 中指定参数属性? (CF9)

    在 CF9 文档中 在 CFScript 中定义组件和函数 http help adobe com en US ColdFusion 9 0 Developing WSE99A664D 44E3 44d1 92A0 5FDF8D82B55C
  • 如何复制添加到 StoryBoard 中 ViewController 的 UIView 并保持约束?

    我创建了一个视图 CustomView xib 和一个专用类 CustomView swift 我已通过添加视图并将自定义类设置为 CustomView swift 将其添加到 Storyboard 中的 ViewController 中
  • Android 中的 RoboSpice 库是什么

    我正在尝试了解 android 中的 RoboSpice 库 我在这里看到了在线文档 https github com stephanenicolas robospice wiki Starter Guide 我尝试过什么 我之前研究过使用
  • 使用StreamBuilder时,如何在用户离线时显示不同的Widget?

    我正在尝试从互联网上获取一些数据 随着使用FutureBuilder 处理各种情况 如离线 在线 错误很容易 但我正在使用StreamBuilder我无法理解如何处理离线案例 以下是我使用 StreamBuilder 的代码 它可以工作 但
  • mysql连接3个表

    如何连接三个具有一个公共列 id 的mysql表 例如 从表1中选择a b 从表2中选择c d 从表3中选择e f 其中id x 谢谢 SELECT t1 a t1 b t2 c t2 d t3 e t3 f FROM table1 t1
  • 访问 Bookshelf.js 中的嵌套关​​系

    我想你可能会说我正在构建一个 reddit 风格的应用程序 所以我有一个主题 该主题有评论 这些评论有父评论等 这是我的评论模型 var Comment bookshelf Model extend tableName comments t
  • 在 Alpine Docker 容器上安装 OpenSSH

    第一次运行 alpine docker 容器并尝试 openssh 安装时 会发生以下情况 ole T docker run it rm alpine bin ash apk add openssh WARNING Ignoring APK
  • 递归 CTE 中的 TSQL GROUP BY

    是否有解决方法可以在循环 CTE 内使用 GROUP BY 或者有解决方法 我需要对 CTE 表的结果集进行分组 并在具有相同 CTE 的另一个循环中使用它 但出现以下错误 不允许使用 GROUP BY HAVING 或聚合函数 递归公用表
  • Angularjs 和 api 之间的内部服务器错误 500

    我正在尝试从 angularjs 保存数据并将其发送到 api 但出现错误 500 内部服务器错误 控制器是一个数组 包含来自 html 页面的范围 任何帮助 控制器 scope save function scope setup push
  • 如果我使用 Apache::DBI 的 connect_cached(),我应该断开连接吗?

    我的基于 mod perl2 的 Intranet 应用程序使用DBI gt connect cached 据推测被覆盖Apache DBI的版本相同 它通常工作得很好 但就在最近 我们的测试服务器开始出现问题 只有两个用户连接 我们的应用
  • 当我添加 orderBy 应用程序在 firestore 中不起作用时

    onSnapshot 中未捕获的错误 错误 查询需要索引 你 可以在 new FirestoreError index cjs js 352 处创建它 在 JsonProtoSerializer push node modules fire
  • Android ADT版本需要20.0.0及以上

    昨天我尝试安装钛appcelerator 在这个过程中我编辑了一些android sdk安装现在我已经将我的android sdk更新到rev 20 但是当我启动eclipse时我收到一个错误 指出sdk需要20 0 0或更高版本 我尝试使
  • 插入触发器是否需要提交语句

    这是实际场景的简化 在哪里可以看到表 B 上缺失的记录 假设有两个数据库表 A B 表 A 上有一个插入触发器 它对表 B 进行插入 但它没有 COMMIT 如果我们通过 JDBC 连接器打开数据库连接 并对表 A 进行插入 并提交 触发器