Declaración MERGE en SQL explicada

Requisito previo: declaración 
MERGE Como declaración MERGE en SQL, como se discutió anteriormente en la publicación anterior , es la combinación de tres declaraciones INSERT , DELETE y UPDATE . Entonces, si hay una tabla de origen y una tabla de destino que se fusionarán, con la ayuda de la declaración MERGE, las tres operaciones (INSERTAR, ACTUALIZAR, ELIMINAR) se pueden realizar a la vez.

Un ejemplo simple aclarará el uso de la instrucción MERGE.

Ejemplo:
Supongamos que hay dos tablas: 

  • PRODUCT_LIST que es la tabla que contiene los detalles actuales sobre los productos disponibles con los campos P_ID, P_NAME y P_PRICE correspondientes al ID, nombre y precio de cada producto.
  • UPDATED_LIST que es la tabla que contiene los nuevos detalles sobre los productos disponibles con los campos P_ID, P_NAME y P_PRICE correspondientes al ID, nombre y precio de cada producto.

La tarea es actualizar los detalles de los productos en PRODUCT_LIST según UPDATED_LIST.

Solución 
Ahora, para explicar mejor este ejemplo, dividámoslo en pasos. 

Paso 1: Reconocer el TARGET y la tabla SOURCE 
Entonces, en este ejemplo, dado que se solicita actualizar los productos en PRODUCT_LIST según UPDATED_LIST, PRODUCT_LIST actuará como TARGET y UPDATED_LIST actuará como la tabla SOURCE.

Paso 2: Reconocer las operaciones a realizar.  
Ahora, como se puede ver, hay tres desajustes entre la tabla TARGET y SOURCE, que son: 

1. El costo del CAFÉ en TARGET es de 15,00 mientras que en SOURCE es de 25,00

      PRODUCT_LIST
102     COFFEE    15.00

      UPDATED_LIST
102     COFFEE    25.00

2. No hay producto BISCUIT en SOURCE pero sí en TARGET

      PRODUCT_LIST
103     BISCUIT   20.00

3. No hay ningún producto CHIPS en TARGET pero sí en SOURCE

      UPDATED_LIST
104     CHIPS     22.00

Por lo tanto, se deben realizar tres operaciones en el TARGET de acuerdo con las discrepancias anteriores. Están:

1. Operación ACTUALIZAR

102     COFFEE    25.00

2. Operación ELIMINAR

103     BISCUIT   20.00

3. Operación INSERTAR

104     CHIPS     22.00

Paso 3: escribir la consulta SQL.

Nota: Consulte esta publicación para conocer la sintaxis de la instrucción MERGE.

La consulta SQL para realizar las operaciones mencionadas anteriormente con la ayuda de la instrucción MERGE es:

SQL

/* Selecting the Target and the Source */
MERGE PRODUCT_LIST AS TARGET
    USING UPDATE_LIST AS SOURCE
 
    /* 1. Performing the UPDATE operation */
 
    /* If the P_ID is same,
       check for change in P_NAME or P_PRICE */
    ON (TARGET.P_ID = SOURCE.P_ID)
    WHEN MATCHED
         AND TARGET.P_NAME <> SOURCE.P_NAME
         OR TARGET.P_PRICE <> SOURCE.P_PRICE
 
    /* Update the records in TARGET */
    THEN UPDATE
         SET TARGET.P_NAME = SOURCE.P_NAME,
         TARGET.P_PRICE = SOURCE.P_PRICE
      
    /* 2. Performing the INSERT operation */
 
    /* When no records are matched with TARGET table
       Then insert the records in the target table */
    WHEN NOT MATCHED BY TARGET
    THEN INSERT (P_ID, P_NAME, P_PRICE)         
         VALUES (SOURCE.P_ID, SOURCE.P_NAME, SOURCE.P_PRICE)
 
    /* 3. Performing the DELETE operation */
 
    /* When no records are matched with SOURCE table
       Then delete the records from the target table */
    WHEN NOT MATCHED BY SOURCE
    THEN DELETE
 
/* END OF MERGE */

Producción:

  PRODUCT_LIST
P_ID    P_NAME    P_PRICE
101     TEA       10.00 
102     COFFEE    25.00
104     CHIPS     22.00

Nota:

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *