Supprimer les fichiers SQL associés à une action du CRM supprimée par code

0000002724     -      28/07/2017

Il est fréquent de supprimer des actions du CRM par code. Ceci est simple puisque chaque action correspond à un enregistrement dans la table ACTIONS et qu'une telle suppression entraîne aucune ou peu de modifications corollaires à effectuer afin de préserver l'intégrité de la base de données. Cependant, contrairement à une suppression dans l'interface de Mercator, l'effacement d'éventuels fichiers stockés dans la base de données et associés à cette action ne sera pas effectué implicitement. Il est donc nécessaire d'enrichir ce code de suppression, afin d'assurer ce "nettoyage" des fichiers SQL.

Si on souhaite supprimer une seule action, ce code SQL peut être utilisé :

delete from ACTIONS where (id=@id) and (module=@module) and (id_sig=@id_sig)
exec SP_DELETE_ACTION_FILES @id,@module,@id_sig

 

Pour supprimer toutes les actions d'une fiche de signalétique :

exec SP_DELETE_ACTIONS_FILES_ALL @module,@id_sig
delete from ACTIONS where (module=@module) and (id_sig=@id_sig)

 

Pour supprimer toutes les actions "enfants" d'une même action "parent" (actions imbriquées) :

exec SP_DELETE_ACTIONS_FILES_BY_PARENT @par_id,@par_module,@par_id_sig
delete from ACTIONS where (par_id=@par_id) and (par_module=@par_module) and (par_id_sig=@par_id_sig)

 

Pour supprimer toutes les actions d'une même chaîne d'actions périodiques :

exec SP_DELETE_ACTIONS_FILES_BY_PERIOD @module,@id_sig,@id_period
delete from ACTIONS where (module=@module) and (id_sig=@id_sig) and (id_period=@id_period)

 

Pour supprimer des actions, selon une clause where personnalisée :

delete FILES from ACTIONS where actions. …
and (files.filepath like '<Files\Actions\' + case when module='' then 'XXXXX' else rtrim(module) end + '\' + rtrim(dbo.CLEANREP(actions.id)) + '\%'
delete from ACTIONS where actions. …

 

Notez qu'hormis le 1er cas, la suppression des fichiers SQL doit être effectuée avant la suppression des actions.