当前位置: 首页 > 面试题库 >

如何在PostgreSQL中结合使用ON CONFLICT和RETURNING?

阳枫涟
2023-03-14
问题内容

我在PostgreSQL 9.5中具有以下UPSERT:

INSERT INTO chats ("user", "contact", "name") 
           VALUES ($1, $2, $3), 
                  ($2, $1, NULL) 
ON CONFLICT("user", "contact") DO NOTHING
RETURNING id;

如果没有冲突,则返回以下内容:

----------
    | id |
----------
  1 | 50 |
----------
  2 | 51 |
----------

但是,如果有冲突,则不会返回任何行:

----------
    | id |
----------

id如果没有冲突,我想返回新列,或者返回id冲突列的现有列。
能做到吗? 如果是这样, 怎么办?


问题答案:

我遇到了完全相同的问题,即使我没有要更新的内容,我还是使用“执行更新”而不是“不执行任何操作”解决了该问题。在您的情况下,将是这样的:

INSERT INTO chats ("user", "contact", "name") 
       VALUES ($1, $2, $3), 
              ($2, $1, NULL) 
ON CONFLICT("user", "contact") DO UPDATE SET name=EXCLUDED.name RETURNING id;

该查询将返回所有行,无论它们刚刚被插入还是之前已经存在。



 类似资料:
  • 我要使postgresql主动发送通知,将指定数据表的指定一行的数据转换为json字符串,作为通知内容,将通知发给其他的进程, 通过查看官网,我发现有pg_notify和row_to_json这两个函数,pg_notify可以使postgresql主动发送通知给其他进程,row_to_json可以使一行转换为json。 我将这两个写在一起,有以下两个写法,但都抛出了错误 错误信息为 如果不用row

  • 问题内容: 有没有办法使用PostgreSQL json / hstore ?esp查询支持。 例如: hstore: 对于杰森 问题答案: 尽管对于答案(对于插入部分)而言为时已晚,但我希望对其他人可能有用: 在HashMap中获取键/值对: 使用以下方式之一将它们插入PostgreSQL: 1) 2) 3)在POJO中设置hstoreMap / jsonbObj(Map类型的hstoreCol

  • 问题内容: 由于某种原因,此功能使我感到困惑: 有人可以解释幕后发生的事情的顺序,以便按部就班地完成这项工作。 在尝试之前,我对此是这样理解的: 要么A) 或B) 这是Python中的一种特殊情况,还是我完全误解了语句的工作方式? 问题答案: 这是一种古老的习语;插入括号以显示优先级, 返回是否为真,如果为假;反之亦然,如果是空的,则返回,否则返回。 因此,如果为true,则返回的RHS ,即。否

  • 我试图用GLM来渲染一个对象,但是我得到了这个: 编辑:忘记提到我试图渲染的对象是一个简单的环面。 我做了很多调查,注意到返回。文档说,如果着色器中没有使用统一变量,即使声明了它,它也会返回。正如你在下面看到的,它已经被声明并且正在顶点着色器中使用。我检查了以确保它是有效的,诸如此类。 顶点着色器(简单的未点亮的红色): 片段着色器:

  • 在本文档中,你将学习如何使用Cyber​​duck对MinIO进行基本操作。Cyber​​duck是适用于MacOS和Windows的FTP和SFTP,WebDAV,OpenStack Swift和Amazon S3的开源客户端。它是在GPL许可证v2.0下发布的。 1. 前提条件 Cyberduck安装并运行。因为MinIO与Amazon S3兼容,所以你可以从这里下载一个通用的HTTP S3

  • 问题内容: 我有一个带有MySQL的远程数据库,并且将我的应用程序用户的照片存储在数据库中,作为LONGTEXT类型的数据库的一行。 我使用Base64将照片转换为字符串。 我使用JSON和PHP连接到远程数据库,因此,我必须使用Base64,因为据我所知,JSON和PHP需要在参数上发送字符串,而使用Base64可以将照片转换为字符串。 可以,但是非常慢。当我加载100 KB的照片时,会花费很多