PostgreSQL 多值更新插入

2023-12-09

是否可以在 PostgreSQL 中执行多值更新插入?我知道存在多值插入,就像“ON CONFLICT”关键字在密钥被违反时执行更新一样......但是是否有可能将两者结合在一起?像这样的事情...

INSERT INTO table1(col1, col2) VALUES (1, 'foo'), (2,'bar'), (3,'baz')
ON CONFLICT ON CONSTRAINT theConstraint DO
UPDATE SET (col2) = ('foo'), ('bar'), ('baz')

我用谷歌搜索了这一点,但找不到任何与此相关的内容。

我有一个使用 pg-promise 的应用程序,我正在执行批处理。它可以工作,但速度慢得可怕(就像每 5 秒左右 50 行左右......)。我想如果我可以取消批处理并正确构建这个多值更新插入查询,它可以提高性能。

编辑: 嗯...我只是自己尝试了一下,不,它不起作用。除非我做错了。所以现在我想我的问题已经变成了,实现这样的事情有什么好方法吗?


多值更新插入绝对是可能的,并且是实现冲突时插入...的一个重要部分。

CREATE TABLE table1(col1 int, col2 text, constraint theconstraint unique(col1));

INSERT INTO table1 VALUES (1, 'parrot'), (4, 'turkey');

INSERT INTO table1 VALUES (1, 'foo'), (2,'bar'), (3,'baz')
ON CONFLICT ON CONSTRAINT theconstraint
DO UPDATE SET col2 = EXCLUDED.col2;

结果是

regress=> SELECT * FROM table1 ORDER BY col1;
 col1 | col2 
------+------
    1 | foo
    2 | bar
    3 | baz
    4 | turkey
(4 rows)

如果文档不清楚,请向 pgsql-general 邮件列表提交适当的反馈。或者更好的是,建议对文档进行补丁。

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

PostgreSQL 多值更新插入 的相关文章

随机推荐

  • 实体框架 C# 中的反射

    我正在尝试使用反射通过实体框架进行动态选择 这个想法是 该方法将获取列名称 要搜索的每列的值以及每列的顺序作为参数 例如 public anEntity list String ColumnName String Value String
  • 未生成 FocusIn/FocusOut

    有人可以澄清 X11 服务器的默认焦点处理吗 我的理解是 焦点 跟随鼠标 并且如果我在不同的终端之间移动鼠标 我可以看到光标随着每个窗口获取 失去焦点而变化 但是 当我运行两个 xev 窗口并在它们之间移动指针时 当指针从一个窗口移动到另一
  • Windows/Linux iOS应用程序开发(不需要编译)[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 询问我们的问题推荐或查找工具 库或最喜欢的场外资源与 Stack Overflow 无关 因
  • R保存和加载数据帧

    我使用此命令保存了数据框 保存 国家数据 文件 数据 Rda 并使用此命令加载它 负载 数据 Rda 但我没有看到包含我创建的数据的表 保存单个 data framesave可能会令人困惑 因为load将 data frame 以及文件中的
  • ImageView.getMatrix() 和 ImageView.getImageMatrix() 有什么区别?

    我在不同的论坛上看到过这个问题 但没有人给出答案 getMatrix 是否处理视图中的图像位置 而 getImageMatrix 处理图像相对于自身的大小 Edit 以下是文档所说的 矩阵 getImageMatrix 返回视图的可选矩阵
  • Haskell Collection API 的“Unfoldable”类型类中函数依赖的作用

    我试图理解 Haskell 的设计Data Collection库 来自 Scala 背景 It uses 功能依赖 其中有一个Scala 模拟 但它们的使用方式对我来说没有意义 在里面Unfoldable类 复制如下 元素类型i显示为取决
  • 可以使用 Hibernate 注释定义 INITIALLY DEFERRED 约束吗?

    我有一个表 其中有一列具有唯一约束 我希望将约束检查推迟到提交时间 如果我像这样使用 Postgres SQL 创建它 省略许多列 CREATE TABLE instrument id bigint NOT NULL name charac
  • 在 MySQL 中替换

    在我的数据库中 我有一些这样的记录 有两列 Id Name 11 Meal 997 12 Meal 998 13 Meal 999 14 Meam 000 15 Meam 001 16 Meam 002 但这是应用程序中的一个问题 由于逻辑
  • 使用jsPDf将网页导出为PDF

    当用户单击按钮时 我尝试将网页导出为 pdf 文件 但下面的代码对我不起作用 任何人都可以帮助我 我哪里出错了 我正在使用 jsPDF 将网页导出为 pdf
  • Google Maps API v3 - 多次地理编码器请求后的 fitBounds

    我想要做的是使用 AJAX 和 JSON 加载一堆地址 找出每个地址的纬度和经度 在地图上放置标记 然后使用fitBounds 放大以便所有标记都可见 听起来很简单 我已经把大部分都打包好了 但我的问题是fitBounds part 基本上
  • xsd 唯一约束不起作用

    我有一个根 Inserts 标签 一系列 Inserts 标签 每个标签都有一个 name 属性 我无法让在线验证器发现存在重复的 名称 值 我们已经挣扎了 好几天了 感谢您发现 XSD
  • 如何在 SQL Server 中合并时间间隔

    假设我有以下事件表personId startDate and endDate 我想知道 X 花了多少时间做一个事件 事件可以相互覆盖 如果此人只有 1 个事件 则很简单 datediff dd startDate endDate 如果这个
  • 关闭delphi firemonkey移动应用程序(Android)中的模式对话框

    我正在花花时间试图弄清楚为什么我的模态表单不会关闭 使用 Delphi XE 5 和 FireMonkey 移动应用程序 Android 我遵循了信息 FireMonkey 移动应用程序中的显示模式对话框 出于演示目的 我创建了一个新的 F
  • Expo SDK需要Expo才能运行

    我正在世博会上运行我的项目 运行 expo pop 后 出现以下错误 Expo SDK需要Expo才能运行 即使对于一个全新的项目 我也会收到此错误 并且我无法再对世博会做任何事情 我跑 expo init Project1 然后进入项目目
  • Android:以编程方式获取硬件信息

    我需要获取运行我的应用程序的 Android 设备上的硬件相关信息 我需要以下类型的信息 CPU 制造商 型号和序列号 SD 卡制造商和序列号 相机制造商和其他相关规格 蓝牙相关硬件信息 WiFi相关硬件信息 RAM 供应商 型号 显示器供
  • 实体框架中唯一字段的选项 - dbSet 的导航属性?

    经过大量研究 实体框架 4 4 似乎不支持唯一约束 是的 它可以并且应该在数据库中完成 但我更希望它发生在模型验证中 因此对用户的警告更漂亮 对于程序员来说 能够用 Unique 属性来装饰属性是理想的 并且应该以某种方式是可能的 例如 p
  • 内存损坏

    我正在运行一个小C程序 include
  • Opencart 为 opencart 添加产品选项

    除了产品选项外 我的购物车似乎正常运行 当我单击 添加购物车 按钮时 会添加该项目 但不会添加任何选项 我真的不明白为什么会发生这种情况 因为我已经按照函数的要求将选项作为数组提交了 使用option id and option value
  • XSL 输出方法文本在 xsl 中包含空格

    我正在创建一些 xsl 将我的 xml 转换为文本 最终将是 csv 我用的是VS2008 当我使用编辑器创建 xsl 时 转换后的输出将按照我的 xsl 缩进 但是 如果我编辑 xsl 并删除格式化的空格 它会正确输出 但这样做是一场噩梦
  • PostgreSQL 多值更新插入

    是否可以在 PostgreSQL 中执行多值更新插入 我知道存在多值插入 就像 ON CONFLICT 关键字在密钥被违反时执行更新一样 但是是否有可能将两者结合在一起 像这样的事情 INSERT INTO table1 col1 col2