假设我有 3 个表(_items、_invoiceHeader、_invoiceDetails)我在 _invoiceDetails 上构建了一个更新触发器,因此如果我更新 _itemCode,我可以更新 _items 表中的 _balance 列。但问题是,如果我更新 _items 表中的 _itemCode 列,则 _invoiceDetails 表上的触发器会立即运行,因为 _items 和 _invoiceDetails 表中的 _itemCode 列上的级联规则。那么我怎么知道发生在 _invoiceDetails 表上的更新是由于级联或同一张表 _invoiceDetails 上的更新而完成的。
我将此代码放在 _invoiceDetails 表的更新触发器中:
if(UPDATE(itemCode)) // I need a condition here to prevent the implementation if the update happened because of cascade rule.
BEGIN
UPDATE items
SET balance=balance+d.quantity
FROM items
INNER JOIN DELETED d
ON items.accountsItemCode=d.accountsItemCode
UPDATE items
SET balance=balance-i.quantity
FROM items
INNER JOIN INSERTED i
ON items.itemCode=i.itemCode
END