事务出错后回滚

2024-05-24

对于熟悉 Postgresql 的人来说,这应该很简单:

我的应用程序发出一个begin_work,进行一些操作,然后发出commit。操作和提交被包装在一个 try-catch 块中,该块的 catch 语句执行rollback。假设:如果在SQL操作过程中出现错误,Postgresql会自动回滚事务,因此我的回滚将是多余的but无害。这个假设正确吗?

(无论如何我要回滚的原因是:以防万一发生与 SQL 操作无关的异常。)


如果发生错误,PostgreSQL 实际上不会回滚事务。它会导致所有后续语句失败并出现错误。您可以在客户端中尝试一下。

任何语句执行成功之前都需要执行回滚。

如果您关闭连接并启动新连接,则影响不大。但是,如果保留连接并运行其他希望成功执行的语句,则它将不起作用。

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

事务出错后回滚 的相关文章

  • 如何使用 django ORM 在外键字段上连接两个表?

    假设我有以下模型 class Position models Model name models CharField class PositionStats models Model position models ForeignKey P
  • 我不断收到错误“关系 [TABLE] 不存在”

    我一直在尝试查询数据库中的两个表 在服务器资源管理器中 我可以看到两个表 甚至可以看到其中的列 我们将它们称为 Schema table1 和 Schema table2 其中 Schema 的第一个字母大写 我尝试运行以下查询 selec
  • Supabase 客户端权限被拒绝,模式为 public

    每当我尝试使用 supabase supabase js 查询数据库时 都会收到错误 error hint null details null code 42501 message permission denied for schema
  • SQL 约束以防止根据列的先前值更新列

    是否可以使用检查约束 或其他一些技术 来防止在更新记录时设置与其先前值相矛盾的值 一个例子是 NULL 时间戳 表明发生了某些事情 例如 file exported 一旦文件被导出并且具有非 NULL 值 就不应再将其设置为 NULL 另一
  • 使用加权行概率从 PostgreSQL 表中选择随机行

    输入示例 SELECT FROM test id percent 1 50 2 35 3 15 3 rows 你会如何编写这样的查询 平均 50 的时间我可以获得 id 1 的行 35 的时间 id 2 的行 15 的时间 id 3 的行
  • MySQL 与 PostgreSQL JSON 搜索功能

    我一直在寻找一篇博客文章或一个功能矩阵 通过 JSON 功能对 MySQL 和 PostgreSQL 进行比较 我找到了一个好的Postgres 的特征矩阵 https www postgresql org about featuremat
  • 如何确定在 Postgres 中使用什么类型的索引?

    我有一个 Postgres 数据库 其中有 2 列不是主键 也不能是主键 但进行了大量搜索 并与其他表中的 2 列进行比较 我相信这是向我的表添加索引的完美案例 我以前从未在数据库上使用过索引 所以我正在尝试学习执行此操作的正确方法 我了解
  • PostgreSQL 上的可扩展性

    我创建了自己的 R 树 rtree h 我想用我自己的数据结构 使用 PostGis 在 postgres 中创建一个扩展 我已经读过连接索引扩展 http www postgresql org docs 9 4 static xindex
  • Rails 5 form_for 与复选框数组

    我使用的是 PostgreSQL 数据库和 Rails 5 0 6 我尝试为我工作的学校构建一个课程分配 WebApp 对于每门课程 教师都可以选择允许访问该课程的形式 迁移文件 def up create table courses do
  • 从 postgres 中的复杂嵌套结构中检索具有特定键名称的 json 元素

    我在 postgres json 字段中有一个复杂的嵌套 json 结构 我想列出所有带有键 type 的元素值 无论它们出现在嵌套结构中的哪个位置 该结构包含嵌套在多个深度的数组中的数组 我应该使用什么sql查询 表结构为 create
  • 如何在 postgresql 查询中仅计算两个日期之间的天数。

    假设我给出了两个日期 如果相差一个月那么它应该显示为30天 即使是几个月也需要转换成天 我尝试过使用age date now timestamp without time zone 但它给出了月 日期 年格式 例如 10 个月 24 天 1
  • 用于存储键值映射的最佳 PostgreSQL 数据类型?

    我想将一个简单的键值字符串映射存储为 PostgreSQL 表中的字段 我打算将地图视为一个整体 即 始终选择整个地图 并且永远不要通过其键或值进行查询 我读过文章比较hstore json and jsonb 但这些并不能帮助我选择哪种数
  • psql 的备用输出格式显示每行一列以及列名

    我在 Ubuntu 上使用 PostgreSQL 8 4 我有一个带有列的表格c1通过cN 这些列足够宽 选择所有列会导致一行查询结果多次换行 因此 输出很难阅读 当查询结果仅包含几行时 如果我可以查看查询结果 使得每行的每一列都位于单独的
  • 当在另一个表中找到匹配项时更新列

    我尝试使用表 A 中与 Passport no 匹配的值更新表 B 中的列 下面是我的sql查询 update tabel b set b country id a national id from table a a join tabel
  • 为什么“setval()”失败并显示“关系...不存在”?

    如果您尝试设置这样的序列号 SELECT setval table ID seq SELECT max ID 1 FROM table 您可能会遇到以下错误 ERROR relation table ID seq does not exis
  • 减少 plpgsql 中烦人的通知

    我有一个使用临时表的函数 如果存在则必须将其删除 drop table if exists t xy create temp table t xy on commit drop as select 随后我在视图中使用这个函数 当 selec
  • PostgreSQL、Npgsql 返回 42601:“$1”处或附近的语法错误

    我正在尝试使用 Npgsql 和 或 Dapper 来查询表 但我不断遇到Npgsql PostgresException 42601 syntax error at or near 1 这是我用 NpgsqlCommand 尝试的结果 u
  • PostgreSQL - 返回多列的函数

    这是一个提供 2 列结果的函数 在这个函数中有一个Loop被用来返回结果 功能 Create Type Repeat rs as label text count bigint CREATE OR REPLACE FUNCTION Repe
  • Postgres Notify 不适用于逻辑复制

    我正在使用逻辑复制将数据从 Postgres 10 4 复制到另一个 Postgres 10 4 实例 订阅者有多个触发器将事件记录到单个表中 该表有一个触发器 该触发器执行另一个函数 返回触发器 来为下游侦听器调用 NOTIFY 审计表上
  • Postgresql 创建扩展失败

    我正在使用扩展 到目前为止没有任何问题 现在我创建一个新的 当我打电话时 创建扩展实用程序 我进入 PG 9 2 创建扩展实用程序 FEHLER Syntaxfehler bei ZEILE 1 创建扩展实用程序 在 PG 9 1 中 创建

随机推荐

  • Android 相机中的零快门延迟

    在正常的快门延迟下 传感器驱动程序将捕获的图像缓冲区提供给 v4l2 层 这里 jpeg 硬件 标头添加一些额外的数据 exif 信息和缩略图 该层将图像缓冲区提供给预览堆 在 HAL 层中 以进行进一步处理 但是零快门时滞的情况下拍照的过
  • 当我在 MySQL 中使用 UUID 作为主键时,会如何影响性能

    我想知道当我在 MySQL 中使用 UUID 作为主键时 会对服务器的性能产生怎样或多大的影响 我想你正在使用InnoDB 无论如何你应该 因此 请阅读 高性能 MySQL 2ed 第 117 页中的以下章节 一般来说 从性能的角度来看 U
  • Grails - 在 Criteria API 中加入关联两次

    可以在标准中加入两次协会吗 def criteria User createCriteria def results criteria list childObject1 eq childObjProp childObjProp1 chil
  • 如何比双击更快地识别单击?

    我有一个UITableView与我添加单击的行and双击手势 let doubleTap UITapGestureRecognizer target self action doubleTap doubleTap numberOfTapsR
  • Java 7 中 Object 和 int 的比较

    最近我偶然发现了一个问题 让我停下来思考 对我来说 下面的代码应该总是会触发错误 但是当我的一位同事问我为什么 Eclipse 没有显示错误时 我无法回答任何问题 class A public static void main String
  • 当我打印“查询”时获取 PY_VAR1

    我正在制作一个简单的网络抓取代码 当我尝试打印一个值时 它给了我其他东西 def PeopleSearch query SearchTerm query what is query print str query SearchTerm St
  • Javascript for 循环跳过最后一个元素

    我有一个数组 根据某些条件从中删除某些元素 当我删除元素时 我会重新启动 for 循环 因为索引已刷新 var k for k 0 k lt this j data length k if condition true this j dat
  • 未定义的变量:$_SESSION

    我越来越E NOTICE当核心 CakePHP 文件尝试引用从未设置或未设置的会话时 会出现错误 cake libs cake session php line 372 function read name null if is null
  • Mac 上的 Emacs 和 MySQL

    我尝试使用 sql mysql 模式 但 emacs 无法找到文件 目录 mysql 但是 我可以从终端访问它 如何将 emacs 中的 mysql 指向 usr local mysql bin mysql setq sql mysql p
  • 将 Azure 网站迁移到 Azure 云服务

    我有一个项目 我计划将 Web 应用程序作为 Azure 网站启动 然后将其迁移到 Azure 云服务 也称为托管服务 如果需要作为扩展策略 做出这个决定是因为我了解到 Azure 网站的开发更加简单 快速 几乎不需要特定于 Azure 的
  • iOS 图表错误:Thread1:EXC_BAD_ACCESS(代码=2,地址=0x2a0c220)

    因此 我正在遵循 AppCoda 上的 iOS Charts 教程 我完美地遵循了它 然后当我遇到问题时 我还复制了代码以使其完全匹配 问题是 当我尝试创建饼图然后运行它时 我收到错误 线程1 EXC BAD ACCESS 代码 2 地址
  • Python Flask应用程序无法被网络中的远程计算机访问

    我在本地主机上的 python 上运行了一个简单的 Flask Web 应用程序 Web 应用程序在 127 0 0 1 8000 上运行 但我无法使用 myHostComputerIPaddress 8000 从网络中的远程计算机访问它
  • 从 DX:AX 寄存器转移到单个 32 位寄存器

    我在添加 16 位乘法的乘积时遇到问题 我想将一年 例如 2015 年 乘以 365 为此 我 mov dx 0 to clear the register mov ax cx cx holds the year such as 2015
  • Visual Studio 托管过程和“操作无法完成”

    当尝试从 Visual Studio 2008 中执行应用程序时 您会收到 无信息的 消息 操作无法完成 解决方案是关闭 Visual Studio Hosting Process 关闭这个 托管进程 的问题是所有 运行和重写 功能不再可用
  • 使用 dplyr 创建 t.test 表?

    假设我有如下所示的数据 set seed 031915 myDF lt data frame Name rep c A B times c 10 10 Group rep c treatment control treatment cont
  • iOS 13:MPMediaPickerController - 内部错误/找不到请求的应用程序扩展

    看来一般MPMediaPicker在 ios13 ipad air 2 iphone SE 上不再工作 从那里复制的示例 1 1 没有显示媒体选择器https developer apple com documentation mediap
  • java.lang.IllegalArgumentException:addChild:子名称“/”不唯一

    java lang IllegalArgumentException addChild 子名称 不唯一 通过在 tomcat webapps 文件夹中启用和禁用 saml 单点登录来替换现有 war 文件时遇到此问题 我正在使用 apach
  • activemq 的优先级

    我们目前正在使用 JMS 和 activemq 5 5 1 开发一个应用程序 我们想为某些消息定义更高的优先级 这将使它们首先被消耗 设置生产者和消费者后 通过spring 3 1 JMSTemplate 优先级并不能完全发挥作用 事实上
  • Java中无参数的for循环

    我在看别人的代码 发现了这段代码 for 我不是 Java 专家 这行代码在做什么 起初 我认为这会创建一个无限循环 但在该程序员使用的同一个类中 while true 其中 如果我错了 请纠正我 是一个无限循环 这两个相同吗 为什么有人会
  • 事务出错后回滚

    对于熟悉 Postgresql 的人来说 这应该很简单 我的应用程序发出一个begin work 进行一些操作 然后发出commit 操作和提交被包装在一个 try catch 块中 该块的 catch 语句执行rollback 假设 如果