我有一张表
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字段?