Eu precisaria executar esse tipo de lógica de forma serializável:
a tabela de contas possui colunas: 'accountName', 'location', 'worth', ...
Suponha que não exista nenhuma chave exclusiva.
Algumas contas estão logicamente (de acordo com uma aplicação) em um mesmo grupo.
Exemplo:
accountNameOne - grupo1 accountNameTwo - grupo1
contaNewOne - grupo2 contaNewTwo - grupo2
Existem muitos aplicativos clientes tentando inserir um membro da conta de seu grupo simultaneamente. Quero ter a garantia de inserir apenas uma conta por grupo.
BEGIN;
select *
from account
where accountName in (list of account names inside a group)
-- if result is not empty exit there's already an account of the group
-- otherwise we want to insert it
INSERT INTO account (accountName, column2, column3, ...)
VALUES ('accountInAGroup', value2, value3, ...);
COMMIT;
Pelo que eu sei, o nível de isolamento de leituras repetíveis não pode ajudar nisso, basicamente fico usando SERIALIZABLE, eu acho.
Você pode me ajudar a entender se meu raciocínio aqui está correto? As leituras repetíveis realmente não são suficientes para isso?