Commit f87712d2 authored by Bruce Momjian's avatar Bruce Momjian

Document that plpgsql upsert example can fail if insert triggers return

unique exception, or if not used in read committed transaction mode.
parent 732808c0
...@@ -2464,7 +2464,7 @@ BEGIN ...@@ -2464,7 +2464,7 @@ BEGIN
INSERT INTO db(a,b) VALUES (key, data); INSERT INTO db(a,b) VALUES (key, data);
RETURN; RETURN;
EXCEPTION WHEN unique_violation THEN EXCEPTION WHEN unique_violation THEN
-- do nothing, and loop to try the UPDATE again -- Do nothing, and loop to try the UPDATE again.
END; END;
END LOOP; END LOOP;
END; END;
...@@ -2474,7 +2474,10 @@ LANGUAGE plpgsql; ...@@ -2474,7 +2474,10 @@ LANGUAGE plpgsql;
SELECT merge_db(1, 'david'); SELECT merge_db(1, 'david');
SELECT merge_db(1, 'dennis'); SELECT merge_db(1, 'dennis');
</programlisting> </programlisting>
This example assumes the <literal>unique_violation</> error is caused by
the <command>INSERT</>, and not by an <command>INSERT</> trigger function
on the table. Also, this example only works in the default Read
Committed transaction mode.
</para> </para>
</example> </example>
</sect2> </sect2>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment