rm_upsert.patch
text/x-patch
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: context
| File | + | − |
|---|---|---|
| doc/src/sgml/plpgsql.sgml | 0 | 39 |
Index: doc/src/sgml/plpgsql.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/plpgsql.sgml,v
retrieving revision 1.156
diff -c -6 -r1.156 plpgsql.sgml
*** doc/src/sgml/plpgsql.sgml 29 Jul 2010 19:34:40 -0000 1.156
--- doc/src/sgml/plpgsql.sgml 5 Aug 2010 17:34:54 -0000
***************
*** 2332,2382 ****
linkend="errcodes-table"> for a list of possible error
codes). The <varname>SQLERRM</varname> variable contains the
error message associated with the exception. These variables are
undefined outside exception handlers.
</para>
- <example id="plpgsql-upsert-example">
- <title>Exceptions with <command>UPDATE</>/<command>INSERT</></title>
- <para>
-
- This example uses exception handling to perform either
- <command>UPDATE</> or <command>INSERT</>, as appropriate:
-
- <programlisting>
- CREATE TABLE db (a INT PRIMARY KEY, b TEXT);
-
- CREATE FUNCTION merge_db(key INT, data TEXT) RETURNS VOID AS
- $$
- BEGIN
- LOOP
- -- first try to update the key
- UPDATE db SET b = data WHERE a = key;
- IF found THEN
- RETURN;
- END IF;
- -- not there, so try to insert the key
- -- if someone else inserts the same key concurrently,
- -- we could get a unique-key failure
- BEGIN
- INSERT INTO db(a,b) VALUES (key, data);
- RETURN;
- EXCEPTION WHEN unique_violation THEN
- -- do nothing, and loop to try the UPDATE again
- END;
- END LOOP;
- END;
- $$
- LANGUAGE plpgsql;
-
- SELECT merge_db(1, 'david');
- SELECT merge_db(1, 'dennis');
- </programlisting>
-
- </para>
- </example>
</sect2>
</sect1>
<sect1 id="plpgsql-cursors">
<title>Cursors</title>
--- 2332,2343 ----