小编典典

检测是否更新或插入了行

sql

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


阅读 174

收藏
2021-05-05

共1个答案

小编典典

您可以查看“系统”列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。

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

2021-05-05