Resumen: en este tutorial, aprenderá a usar la declaración Oracle MERGE
para realizar una actualización o inserción datos basados en una condición especificada.
Introducción a la sentencia MERGE de Oracle
La sentencia MERGE
de Oracle selecciona datos de una o más tablas de origen y lo actualiza o lo inserta en una tabla de destino. La instrucción MERGE
le permite especificar una condición para determinar si actualizar o insertar datos en la tabla de destino.
Lo siguiente ilustra la sintaxis de Oracle MERGE
declaración:
Examinemos la MERGE
declaración en detalle:
Primero, especifique la tabla de destino (target_table
) que desea actualizar o insertar en la cláusula INTO
.
En segundo lugar, especifique la fuente de datos (source_table
) que se actualizará o insertará en la cláusula USING
.
En tercer lugar, especifique la condición de búsqueda según la cual la operación de combinación se actualiza o inserta en la cláusula ON
.
Para cada fila de la tabla de destino, Oracle evalúa la condición de búsqueda:
- Si el resultado es verdadero, Oracle actualiza la fila con los datos correspondientes de la tabla fuente.
- En caso de que el resultado sea falso para una y filas, luego Oracle inserta la fila correspondiente de la tabla de origen en la tabla de destino.
La instrucción MERGE
se vuelve conveniente cuando desea combinar varias instrucciones INSERT
, UPDATE
y DELETE
en una sola operación.
Debido a que MERGE
es una declaración determinista, no puede actualizar la misma fila de la tabla de destino varias veces en la misma MERGE
declaración .
Puede agregar una cláusula DELETE WHERE
opcional a la cláusula MATCHED
para limpiar después de una operación de fusión. La cláusula DELETE
elimina solo las filas de la tabla de destino que coinciden con ON
y DELETE WHERE
cláusulas.
Requisitos previos de Oracle MERGE
Para ejecutar la instrucción MERGE
, debe tener la INSERT
y UPDATE
en las tablas de origen. Si usa la cláusula DELETE
, también debe tener el privilegio de objeto DELETE
en la tabla de destino.
Oracle Ejemplo de MERGE
Supongamos que tenemos dos tablas: members
y member_staging
.
Nosotros inserte una nueva fila en la tabla members
siempre que tengamos un nuevo miembro. Luego, los datos de la tabla members
se fusionan con los datos de la tabla member_staging
.
Las siguientes declaraciones cree las tablas members
y member_staging
:
Las siguientes INSERT
Las declaraciones insertan datos de muestra en las tablas members
y member_staging
:
Al actualizar los datos de la members
tabla a member_staging
tabla, debemos realizar las siguientes acciones:
- Actualizamos las filas con id de miembro 1, 3 , 4 y 6 porque el rango o el apellido de estos miembros en estas tablas son diferentes.
- Insertamos las filas con el ID de miembro 7 a 10 porque estas filas existen en el
members
pero no en lamember_staging
tabla.
En total, se deben combinar 8 filas.
El siguiente ing es la MERGE
sentencia que realiza todas estas acciones de una sola vez.
La sentencia merge compara cada fila en el members
con cada fila en la member_staging
tabla según los valores de las member_id
columnas (consulte la ON
cláusula anterior).
Si los valores en member_id
columnas de ambas tablas son iguales, la MERGE
actualiza el nombre, apellido y rango de la tabla members
a la tabla member_staging
solo si los valores de first Las columnas de nombre, apellido o rango de ambas tablas son diferentes.
De lo contrario, inserta la fila de la tabla members
en la member_staging
tabla.
Oracle devolvió 8 filas fusionadas como se esperaba.
En este tutorial, ha aprendido a utilizar Oracle MERGE
para actualizar o insertar datos basado en una condición específica.
- ¿Fue útil este tutorial?
- SíNo