10/17 Delete Actions

Las delete actions son acciones que se ejecutan una vez se elimina un registro en una tabla si ésta tiene alguna delete actions.
Para que se realice una DeleteAction las tablas deben tener una relación ya sea en su nodo relaciones o a través de un EDT.

Si nos fijamos en la imagen, tenemos la tabla de liquidaciones de clientes (CustSettlement) y las líneas de liquidación (CustSettlementLine); la CustSettlementLine está relacionada con la CustSettlement y la cabecera (CustSettlement) tiene una delete action. Así si borramos la cabecera se borrarán las líneas asociada a ésta.

Para crear una DeleteActions lo haremos con el submenú:



En las propiedades de la deleteAction le deberemos indicar la tabla a la que afectará la delete action y el tipo de DeleteAction.

Para nuestro ejemplo queremos que si se borra un registro en la tabla FarmTable se borren los registros ligados de la FarmTrans.




Si la tabla secundaria tiene una relación con la principal automáticamente se nos asignará en la propiedad Relation.

A continuación explicaré que significa cada DeleteAction tomando como ejemplos las tablas FarmTable y FarmTrans.

None: No realizará ninguna acción sobre la tabla asignada en la delete Action. (Entonces para que la vais a crear!!)
Cascade: Borrará el registro de la cabecera y el de las líneas relacionadas (Borraría la FarmTable y todas las FarmTrans relacionadas con ésta).
Restricted: Borrará la cabecera siempre y cuando no existan registros en la tabla relacionada de la delete Action. (Sólo borrará la FarmTable si no existen FarmTrans relacionadas).

En caso que existan se mostrará un mensaje como el siguiente:


Cascade + Restriced:

Se acostumbra a utilizar cuando existen distintas tablas relacionadas y con deleteActions.

Para este ejemplo vamos a tener las siguiente estructura:
La CustTable tendrá una DeleteAction con la FarmTable del tipo Cascade.



La FarmTable tendrá una DeleteAction de tipo Cascade + Restricted con la FarmTrans



Ahora probaremos el funcionamiento de esta nueva DeleteAction. 
 He creado esto registros para demostrar lo que quiero.



Al intentar eliminar un registro de la FarmTable si ésta tiene algún registro relacionado en la FarmTrans, saltará la parte Restricted de la DeleteAction y no permitirá eliminar el registro. Pero al eliminar un registro de la CustTable, saltará la DeleteAction de tipo Cascade que ésta tiene y eliminará los registros de la FarmTable relacionada y en este caso, saltará la DeleteAction (la que tiene la FarmTable Cascade + Restricted), pero el tipo Cascade (no cómo en el ejemplo anterior) y eliminará todos los registros de la FarmTrans.









Comentarios