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