Je voudrais savoir s'il est possible de mettre à jour une colonne (ou en général 'faire quelque chose') dans une table SQL quand un événement se produit dans un autre.Comment mettre à jour la table SQL quand une ligne est supprimée dans une autre?
Plus précisément, je voudrais savoir s'il est possible de changer une valeur dans une colonne particulière d'une table enfant lorsqu'une ligne est supprimée dans la table parente. Triez ON DELETE CASCADE
mais sans supprimer les lignes juste en les mettant à jour.
Le SGBD que j'utilise est MS SQL Server (édition Express).
Merci beaucoup
SQL Server a une clause OUTPUT qui peut simplifier le travail de procédure stockée en écrivant des données à partir des lignes supprimées à une autre table au moment de l'exécution de l'instruction delete. D'autres SGBDR peuvent avoir des caractéristiques similaires. –
Merci! Juste une note: J'utilise .NET Entity Framework pour insérer, supprimer, etc ... L'EF va-t-il gérer seul le déclenchement ou dois-je considérer autre chose? Merci! – Julen
Vous allez définir le déclencheur au niveau de la base de données. Fondamentalement, vous le configurez de sorte que chaque fois qu'une suppression se produit sur la table X, il va exécuter le déclencheur et faire quelque chose à la table Y. Dans votre application, vous supprimerez la ligne comme vous l'avez toujours fait. Notez que ce déclencheur s'exécutera chaque fois qu'un enregistrement est supprimé de la table par un utilisateur. Si vous voulez avoir plus de flexibilité dans quand et comment il est exécuté, alors vous voudrez regarder à créer une procédure stockée qui est appelée par votre application. –