From: Alvaro Herrera Date: Wed, 18 May 2022 18:41:04 +0200 Subject: [PATCH v3] Link to MVCC docs in MERGE docs --- doc/src/sgml/mvcc.sgml | 10 +++++----- doc/src/sgml/ref/merge.sgml | 2 ++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml index 341fea524a..1d4d5a62f9 100644 --- a/doc/src/sgml/mvcc.sgml +++ b/doc/src/sgml/mvcc.sgml @@ -425,13 +425,13 @@ COMMIT; MERGE allows the user to specify various combinations of INSERT, UPDATE - or DELETE subcommands. A MERGE + and DELETE subcommands. A MERGE command with both INSERT and UPDATE subcommands looks similar to INSERT with an ON CONFLICT DO UPDATE clause but does not guarantee that either INSERT or UPDATE will occur. - If MERGE attempts an UPDATE or + If MERGE attempts an UPDATE or DELETE and the row is concurrently updated but the join condition still passes for the current target and the current source tuple, then MERGE will behave @@ -448,9 +448,9 @@ COMMIT; and execute the first one that succeeds. If MERGE attempts an INSERT and a unique index is present and a duplicate row is concurrently - inserted, then a uniqueness violation is raised. - MERGE does not attempt to avoid the - error by executing an UPDATE. + inserted, then a uniqueness violation error is raised; + MERGE does not attempt to avoid such + errors by evaluating MATCHED conditions. diff --git a/doc/src/sgml/ref/merge.sgml b/doc/src/sgml/ref/merge.sgml index f68aa09736..271076bfd5 100644 --- a/doc/src/sgml/ref/merge.sgml +++ b/doc/src/sgml/ref/merge.sgml @@ -539,6 +539,8 @@ MERGE total_count + See for a thorough explanation on the behavior of + MERGE under concurrency. You may also wish to consider using INSERT ... ON CONFLICT as an alternative statement which offers the ability to run an UPDATE if a concurrent INSERT -- 2.30.2 --bsuz7mbwvsdnim3l--