我有一個交易SELECT和可能INSERT。出於併發原因,我將FOR UPDATE加到SELECT。爲了防止幻像行,我使用SERIALIZABLE事務隔離級別。當表中有任何行時,這一切都可以正常工作,但是如果表爲空。當表爲空時,SELECT FOR UPDATE不執行任何(獨佔)鎖定,併發線程/進程可以發出相同的SELECT FOR UPDATE而不被鎖定。 CREATE TABLE t (
我正在使用SELECT...FOR UPDATE查詢來鎖定表。不幸的是,我有一個情況我需要鎖定兩個不同的行集在同一個表,像這樣: SELECT * FROM mytable WHERE attribute1 = 'something' FOR UPDATE
SELECT * FROM mytable WHERE attribute2 = 'somethingelse' FOR UPDATE
U