我可以在postgresql 9.6.5中并行更新一段bytea字段吗?

时间:2018-03-19 07:20:49

标签: sql postgresql bytea

我有一张表

event_id BIGINT NOT NULL,
data BYTEA

,此表中的一列是

 event_id |        data
----------+--------------------
        2 | \x0000000000000000

现在,我想更新一些数据,如

UPDATE "bin_data" SET "data"=SET_BYTE("data", 0, 1) where "event_id"=2;

但是,我不确定此选项是否可以同时发生。

如果这两个选项

UPDATE "bin_data" SET "data"=SET_BYTE("data", 0, 1) where "event_id"=2;
UPDATE "bin_data" SET "data"=SET_BYTE("data", 1, 1) where "event_id"=2;

并行执行。

在我的测试中,结果为\x0101000000000000,但我无法保证我的测试是绝对并行的。

我知道如何解决它,就像这样锁定行

UPDATE "bin_data" SET "data"=SET_BYTE((SELECT "data" FROM "data" WHERE "event_id"=2 FOR UPDATE), 0, 1) where "event_id"=2;

有没有办法在没有锁定行的情况下并行更新一个bytea字段?

0 个答案:

没有答案
相关问题