I have a table with a Balance column of type decimal(18,0).I want to get updates to its Balance field and reflect the changes in the parents of the updated row.Currently I can easily subtract parent values by selecting from deleted table and add to parent values by selecting from inserted table in two different queries. Since the updates will trigger an other update and so the concept of recursive triggers (enabled in my database) comes to scene, I want to have the minimum number of updates.Is the following the best way to merge inserted and deleted table and to get the real difference in Balance field?Update MyTableSet Balance += updated.PriceFrom (      Select  IsNull(inserted.ParentID, deleted.ParentID) As ParentID,             (IsNUll(inserted.Balance,0) - IsNull(deleted.Balance,0))  As Price             From inserted            Full join deleted            on inserted.ID = deleted.iD            WHERE IsNull(inserted.ParentID, deleted.ParentID) IS NOT NULL) As updatedINNER JOIN MyTableON MyTable.ID = updated.ParentIDWhere updated.ParentID IS NOT NULLFor example changing Balance from 1000 to 800 should yield to -200 change in parent Balance fields.Also, my code fires the trigger one extra time, so that for an update in level 3 I get 4 updates (trigger-firing) instead of 3.This is on SQL Server 2012.
Merge inserted and deleted tables in SQL trigger
sql;sql server;t sql