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

检测是否更新或插入了行

王锐
2023-03-14
问题内容

我在做一个INSERTON CONFLICT用java Postgres的。有什么方法可以确定是executeUpdate插入行还是更新行?


问题答案:

您可以查看“系统”列xmax来说明不同之处。0在这种情况下,它用于插入的行。

CREATE TABLE tbl(id int PRIMARY KEY, col int);
INSERT INTO tbl VALUES (1, 1);



INSERT INTO tbl(id, col)
VALUES (1,11), (2,22)
ON     CONFLICT (id) DO UPDATE
SET    col = EXCLUDED.col
RETURNING *, **(xmax = 0) AS inserted** ;

这是建立在未记录的实现细节上的,该细节在将来的版本中可能会更改(即使可能性不大)。它适用于Postgres 9.5和9.6。

它的优点:您无需引入其他列。



 类似资料:
  • 问题内容: 我们有一个数据库,每天cronjob在午夜更新,我们从外部XML获取新数据。 我们要做的是插入所有新内容,并在键重复的情况下更新该字段。 我们想知道的是实际插入了哪些行,这意味着我们想要一个新项目的列表。是否有可能返回新插入的查询?基本上,我们将需要获取所有新的ID,而不是新插入的数量。 谢谢 问题答案: 添加一列并更改您的查询: 您也可以在触发器中增加它,使您可以保持查询不变。

  • 问题内容: 有没有办法像在MySQL服务器上那样批量执行查询? 将无法使用,因为如果该字段已经存在,它将直接忽略该字段并且不插入任何内容。 将无法工作,因为如果该字段已经存在,它将首先对其进行处理,然后再次进行处理,而不是对其进行更新。 可以使用,但不能批量使用。 因此,我想知道是否可以批量发出这样的命令(一次不止一次发送)。 问题答案: 您 可以 使用INSERT … ON DUPLICATE

  • 本文向大家介绍C#检测是否有u盘插入的方法,包括了C#检测是否有u盘插入的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#检测是否有u盘插入的方法。分享给大家供大家参考。具体如下: 该C#代码可监控是否有u盘插入,同时可以监控其它驱动器的变化 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 今天早上有一篇帖子问有多少人禁用JavaScript。然后我开始想知道可以使用什么技术来确定用户是否禁用了它。 有谁知道一些简短/简单的方法来检测是否禁用了JavaScript?我的目的是警告您,如果没有启用JS的浏览器,站点将无法正常运行。 最终,我想将它们重定向到可以在没有JS的情况下运行的内容,但是我需要将此检测作为占位符才能启动。 问题答案: 我假设你正在尝试确定是否提供Jav

  • 我正在尝试检查用户单击按钮后是否加载了iframe。 我有 顺便说一下,我的iframe是动态创建的。它不会与初始页面加载一起加载。

  • 问题内容: 我正在使用Java连接到MySQL数据库。我正在尝试向数据库中插入或更新数据。 即使我很确定插入成功,它也会返回false。 根据“执行” API,返回值是“如果第一个结果是ResultSet对象,则为true;如果是更新计数或没有结果,则为false”。 如何确定插入或更新是否成功? 问题答案: 由于您正在使用,因此可以致电- 通过上面的Javadoc( Return )链接,添加了