Re: [GENERAL] Concurrency-safe Replacing a Set of Rows (Without SERIALIZABLE) - Mailing list pgsql-general

From David G. Johnston
Subject Re: [GENERAL] Concurrency-safe Replacing a Set of Rows (Without SERIALIZABLE)
Date
Msg-id CAKFQuwanD3ABa=JAeoo3JnbaTiBseTqS8nPNpF2c7owcYR8TMg@mail.gmail.com
Whole thread Raw
In response to [GENERAL] Concurrency-safe Replacing a Set of Rows (Without SERIALIZABLE)  (Gavin Wahl <gwahl@fusionbox.com>)
Responses Re: [GENERAL] Concurrency-safe Replacing a Set of Rows (Without SERIALIZABLE)  (Gavin Wahl <gwahl@fusionbox.com>)
List pgsql-general
On Wed, Apr 12, 2017 at 3:32 PM, Gavin Wahl <gwahl@fusionbox.com> wrote:
I have a table that stores user notifications:

CREATE TABLE notifications (
  user_id INT,
  type CHAR(1),
  PRIMARY KEY (user_id, type)
);
​[...]​


Is there any way to do this correctly without SERIALIZABLE transactions? It
would be nice to avoid having to retry transactions. Ideally I'd like to avoid
explicit locking as well.

​Given this limited example I'd probably choose to model notifications as an array on the user table.  Then just "UPDATE user SET notifications = array['a','b']::text WHERE user_id = 1;

David J.

pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: [GENERAL] Error During PostGIS Build From Source on Linux
Next
From: Gavin Wahl
Date:
Subject: Re: [GENERAL] Concurrency-safe Replacing a Set of Rows (Without SERIALIZABLE)