Add UPSERT feature

This commit is contained in:
steve-chavez
2018-05-28 13:26:18 -05:00
committed by Steve Chávez
parent e56313196b
commit 6f0a25520a
+32
View File
@@ -694,6 +694,38 @@ To bulk insert JSON post an array of objects having all-matching keys
{ "name": "Janus", "age": 10, "height": 55 }
]
Upsert
------
You can make an UPSERT with :code:`POST` and the :code:`Prefer: resolution=merge-duplicates` header:
.. code:: HTTP
POST /employees HTTP/1.1
Prefer: resolution=merge-duplicates
[
{ "id": 1, "name": "Old employee 1", "salary": 30000 },
{ "id": 2, "name": "Old employee 2" , "salary": 42000 },
{ "id": 3, "name": "New employee 3" , "salary": 50000 }
]
UPSERT merging operates based on the primary key columns, you must specify all of them. You can also choose to ignore the duplicates with :code:`Prefer: resolution=ignore-duplicates`.
A single row UPSERT can be done by using :code:`PUT` and filtering the primary key columns with :code:`eq`:
.. code:: HTTP
PUT /employees?id=eq.4 HTTP/1.1
{ "id": 4, "name": "Sara B.", "salary": 60000 }
All the columns must be specified in the request body, including the primary key columns.
.. note::
This feature is only available starting from PostgreSQL 9.5 since it uses the `ON CONFLICT clause <https://www.postgresql.org/docs/9.5/static/sql-insert.html#SQL-ON-CONFLICT>`_.
Deletions
=========