Eliminación de supresión en cascada en el entorno de producción para impedir la pérdida de datos

Cuando se suprimen registros en el entorno de transición para una tabla de base que contiene una relación de claves foráneas de supresión en cascada con otra tabla y propaga los cambios al entorno de producción, se puede producir una pérdida de datos. Para impedir la pérdida de datos, piense en cambiar la relación de claves foráneas entre las tablas para que sea una relación de restricción de supresión o una relación de supresión de ninguna acción.

Por qué y cuándo se efectúa esta tarea

Cuando seleccione eliminar un registro, la mayoría de los registros de base de datos se marcan para supresión y no se suprimen inmediatamente. Cuando un registro se marca para supresión, ninguna operación de supresión en cascada se ejecuta en las tablas de bases de datos que tengan una relación de claves foráneas con la tabla que incluye el registro marcado para supresión. Si inhabilitar la operación de marcar para supresión durante un proceso de carga, se produce la supresión real de un registro y la supresión de cascada subsiguiente de otro registros.

Cuando un registro de una tabla que contiene una relación de claves foráneas de supresión en cascada, como la tabla OFFER se suprime en el entorno de transición y la supresión se propaga al entorno de producción, podría producirse una operación de supresión en cascada frente a los registros dentro de la tabla ORDERITEMS. Puesto que no hay datos ORDERS transaccionales dentro del entorno de transición, la supresión de datos OFFER en el entorno de transición no tiene un efecto cascada dentro de ese entorno. Sin embargo, en el entorno de producción se puede producir la supresión en cascada. Si se produce una supresión en cascada en el entorno de producción, también se suprime cualquier registro ORDERITEMS que está asociado con el registro seleccionado en la tabla OFFER. Cuando se produce la supresión en cascada, se puede producir la pérdida de datos ya que ahora faltan registros de la tabla ORDERITEMS para pedidos.

Procedimiento

Para impedir la pérdida de datos cuando las supresiones del entorno de transición se propagan al entorno de producción, piense en implementar una de las siguientes opciones:
  • Convierta la relación de clave foránea de cascade-delete entre las tablas OFFER y ORDERITEMS en una relación de restricción de supresión o delete-no-action. La nueva relación garantiza que el registro de oferta no se suprima dentro del entorno de producción cuando se propagan todas las supresiones del entorno de transición.

    El programa de utilidad stagingprop proporciona códigos cuando se produce una violación de delete-restrict o delete-no-action dentro del entorno de producción. Si se intenta propagar las eliminaciones de tablas con estas restricciones, pueden producirse errores.

    Ejecute los siguientes mandatos para eliminar la relación de clave foránea en cascada y crear una relación de clave restringida en cascada:
    • DB2
      ALTER TABLE orderitems
             DROP CONSTRAINT f_506;
      
      ALTER TABLE orderitems
             ADD CONSTRAINT f_506
                    FOREIGN KEY (offer_id)
                                   REFERENCES offer  (offer_id)
                                   ON DELETE RESTRICT;
    • Oracle
      ALTER TABLE orderitems
             DROP CONSTRAINT f_506;
      
      ALTER TABLE orderitems
             ADD  ( CONSTRAINT f_506
                    FOREIGN KEY (offer_id)
                                   REFERENCES offer );
      
      Note: The "ON DELETE CASCADE" part has been removed.
    Nota: Puede encontrar un problema de rendimiento cuando descarga y crea una relación de claves foráneas en tablas que contienen una gran cantidad de datos. El problema de rendimiento se produce debido a que la relación de claves foráneas debe descargarse y crearse fila a fila.
  • Utilice el mandato "marcar para eliminar" para que se supriman los registros de las tablas con relaciones de clave foránea cascade-delete en las tablas cuyos datos deben preservarse.

    Cuando se utiliza el programa de utilidad de limpieza de base de datos para eliminar registros marcados para supresión, la pérdida de datos puede producirse al propagar los cambios al entorno de producción. Para obtener más información sobre cómo ejecutar el programa de utilidad de limpieza de la base de datos cuando un sitio utiliza un entorno de transición, consulte Ejecución del programa de utilidad de limpieza de la base de datos.

    Para obtener más información sobre el SQL para ejecutar el programa de utilidad de limpieza de base de datos para objetos de WebSphere Commerce, consulte Objetos del programa de utilidad de Limpieza de base de datos.

    Nota: Evite emitir mandatos de supresión, "excepto marcar para eliminar", para las tablas que contienen relaciones de clave foránea cascade-delete en las tablas cuyos datos deben conservarse. Si debe ejecutar operaciones de supresión en una tabla, revise las relaciones de claves foráneas para la tabla para identificar las tablas afectadas por las operaciones. Para obtener más información sobre las tablas de base de datos de HCL Commerce, consulte Esquema de base de datos de HCL Commerce.