当前位置: 首页 > 知识库问答 >
问题:

在Postgres 10的分区表中插入多个带有onConflict子句的行

扈德容
2023-03-14

我在后文10中有如下陈述:

INSERT INTO my_table(A, B)
       VALUES (val_A1, val_B1),
              ...
              (val_A99, val_B99)
       ON CONFLICT DO NOTHING;
org.postgresql.util.PSQLException: ERROR: 
ON CONFLICT clause is not supported with partitioned tables

但是,由于我插入了多个值,除了这个值之外,我还有什么选择:

INSERT INTO my_table
       SELECT T.A, T.B
       FROM (VALUES(val_A1, val_B1), 
                   ...,
                   (val_A99, val_B99)) AS T(A, B),
       WHERE NOT EXISTS (
           SELECT 1 FROM my_table AS T2
                    WHERE T2.A = T.A
                      AND T2.B = T.B
       );

共有1个答案

冯澄邈
2023-03-14

您最好的选择是升级到PostgreSQL v11,在那里这将起作用。

PostgreSQL v11支持对分区表的primary keyunique约束(如果分区键是索引的一部分),这是insert...on conflict的必要条件。

 类似资料:
  • 问题内容: 好的。简而言之,我正在尝试执行INSERT SELECT,例如: 当然,@key不会从每个插入中返回每个后续的LAST_INSERT_ID(),而是仅从最后一个插入返回ID。 基本上,我将旧的USER表拆分为ENTITY和USER,例如: 我为什么要这样做?基本上,我有一个“商店”实体,它将具有“用户”公用的字段,例如地址和电话号码。因此,任何“ ENTITY”都可能没有多个地址(送货

  • 问题内容: 这个问题已经在这里有了答案 : 使用PDO插入多行 (1个答案) 4年前关闭。 我有数据库表:和 当前,唯一要插入类别表的函数与此类似: 我有一种形式来输入标题和插入URL图像的可能性。 通过单击提交标题,我要转到类别表,到目前为止,图像应该转到表图像,每个图像都有一个ID,但内部连接到该类别的ID。 桌子: 我无法正确执行此操作 我想要的结果示例: html表格 提交后 表类别: 表

  • 我正在开发基于spring+Hibernate的web应用程序。在这个应用程序中,我必须对数据库中的50000个可用记录进行计算。当前逻辑:- 循环0到50000(所有50000记录彼此独立) 选择第i个元素 对第i个元素执行计算(删除CALCULATION_TEMP表(如果存在),创建新表CALCULATION_TEMP并在CALCULATION_TEMP表中插入计算) 在步骤3表上进行一些计算

  • 问题内容: 我有一个分区表,该表具有(我认为)适当的触发器和一些约束。不知何故,语句为每行插入2行:一行用于父行,另一行用于适当的分区。 简要的设置如下: 经过进一步的调试,我隔离了导致它的原因:触发器返回了事实,而不是just 。但是,我确实希望我的insert语句返回自动增量,并且如果我只是返回,则不是这种情况。 有什么解决方案?为什么返回会导致这种看似“奇怪”​​的行为? 更新#1 好吧,我

  • 问题内容: 我有一个列表,例如:thing1,thing2,thing3。我想将它们插入具有相同外键的查找表中。因此理想情况下,它看起来应该像这样: 看来完成此操作的唯一方法是将列表转换为查询,但是我想知道,是否有更简单的方法? 这是我尝试过的: 我听说您无法在cfquery中执行cfloop,但是我什至不确定这是否成立,因为VALUES中没有逗号,并且我不确定如何说“ cfloop中的“当前迭代

  • 问题内容: 我有一个网站,人们可以在上面投票。向用户显示了4辆汽车,他/她可以对他们最喜欢的汽车进行投票。 该表具有以下重要列: 目前,我对所有car_types使用了一个映射表,该表具有没有间隙的PK。我选择映射表的最大ID并创建4个随机数(PHP),然后从映射中选择那些行并获得相应的car_id。我使用这些数字从表中选择汽车。 问题 在于,后来添加到数据库中的汽车与先前添加的汽车获得相同分数的