Posso fazer um MERGE atômico no Oracle?

Eu tenho algumas instâncias de um aplicativo J2EE em execução em um único cluster WebLogic.

Em algum momento, esses aplicativos fazem uma MERGE para inserir ou atualizar um registro no banco de dados Oracle de back-end. O MERGE verifica se uma linha com uma chave primária especificada está lá ou não. Se estiver lá, atualize. Caso contrário, insira.

Agora, suponha que duas instâncias de aplicativo desejem inserir ou atualizar uma linha com chave primária = 100. Suponha que a linha não exista. Durante o estágio de "verificação" da mesclagem, os dois veem que as linhas não estão lá e tentam inserir. Então, recebo uma violação de restrição de chave exclusiva.

Minha pergunta é a seguinte: Existe um MERGE atômico no Oracle? Estou procurando algo que tenha um efeito semelhante aoINSERT ... FOR UPDATE no PL / SQL, exceto que eu só posso executar o SQL nos meus aplicativos.

EDIT: Eu não estava claro. Estou usando a instrução MERGE enquanto esse erro ainda ocorre. O fato é que apenas a parte "modificadora" é atômica, e não a fusão completa.

questionAnswers(4)

yourAnswerToTheQuestion