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