¿Puedo hacer una fusión atómica en Oracle?
Tengo un par de instancias de una aplicación J2EE ejecutándose en un solo clúster de WebLogic.
En algún momento, estas aplicaciones hacen una MERGE para insertar o actualizar un registro en la base de datos Oracle de back-end. El MERGE verifica si hay una fila con una clave primaria especificada o no. Si está allí, actualice. Si no, inserte.
Ahora suponga que dos instancias de aplicación desean insertar o actualizar una fila con la clave primaria = 100. Suponga que la fila no existe. Durante la etapa de "verificación" de fusión, ambos ven que las filas no están allí, por lo que ambos intentan insertar. Entonces obtengo una violación de restricción de clave única.
Mi pregunta es esta: ¿hay una fusión atómica en Oracle? Estoy buscando algo que tenga un efecto similar aINSERT ... FOR UPDATE
en PL / SQL, excepto que solo puedo ejecutar SQL desde mis aplicaciones.
EDITAR: no estaba claro. Estoy usando la instrucción MERGE mientras este error todavía ocurre. La cuestión es que solo la parte "modificadora" es atómica, no toda la fusión.