comment changer la valeur de colonne particulière en cascade

J'ai trois tables

Company Department Cost-centers 

et ils ont une relation un-à-plusieurs. comme mon entreprise peut avoir plusieurs départements. Dans mon entreprise, il y a une colonne is_active .

Si je change cette colonne d'actif en inactif que le service associé à cette société particulière doit être inactif (non supprimé) et les centres de coûts associés à ce service particulier devraient également passer à inactif.

J'utilise la suppression en cascade mais je ne veux pas supprimer Je veux juste mettre à jour cette colonne particulière d'active à inactive.

Vous devez créer un triggersur UPDATE pour la table Company, quelque chose comme ceci:

 if update(is_Active) begin update Department set is_Active=i.is_Active from Department as d inner join inserted as i on d.CompanyID = i.ID where d.CompanyID = i.ID and d.is_Active<>i.is_Active end 

Et un autre triggersur dans Département, de la même manière, qui met à jour les Cost_Centers.

Vous pouvez utiliser un triggersur pour des choses comme ci-dessous

 IF EXISTS (SELECT name FROM sys.objects WHERE name = 'updateOtherColumns' AND type = 'TR') DROP TRIGGER updateOtherColumns; GO CREATE TRIGGER updateOtherColumns ON Company AFTER UPDATE AS IF UPDATE(is_active) BEGIN UPDATE D SET D.is_active= C.is_active FROM Departments D INNER JOIN Company C ON D.id=C.dept_id and D.is_active <>C.is_active --first update departments and then cost-centers UPDATE CC SET CC.is_active= D.is_active FROM Departments D INNER JOIN Cost_Centers CC ON D.cost_center_id=CC.id and D.is_active <>CC.is_active END GO