我无法让此更新触发器正常工作。我想知道我正在尝试做的事情是否可能。
所以我有一个名为的客户表,tblCustomers
其中包含以下字段:
ActivationStatus
RateClass
ParentCustomerID
(表示该客户是哪个客户(如果有)的“孩子”)
ActivationStatus
每当父客户或父客户发生 UPDATE 时RateClass
,任何子客户也需要使用相同的值进行更新。
我目前有:
ALTER TRIGGER [tblCustomers_UTrig] ON [tblCustomers] FOR UPDATE AS
-- If ActivationStatus updated, need to update any child Customers too
IF UPDATE(ActivationStatus)
BEGIN
UPDATE tblCustomers
SET tblCustomers.ActivationStatus = inserted.ActivationStatus
FROM tblCustomers, inserted
WHERE tblCustomers.ParentCustomerID = inserted.CustomerID
END
-- IF RateClass updated, need to update any child Customers too
IF UPDATE(RateClass)
BEGIN
UPDATE tblCustomers
SET tblCustomers.RateClass = inserted.RateClass
FROM tblCustomers, inserted
WHERE tblCustomers.ParentCustomerID = inserted.CustomerID
END
当我尝试更新时出现错误: 超出最大存储过程、函数、触发器或视图嵌套级别(限制 32)
很明显,一个递归问题正在发生,它为什么会发生是有道理的,但是应该可以做这样的事情,对吧?我怎样才能做到这一点?
请注意,我宁愿不这样做SET RECURSIVE_TRIGGERS OFF
,因为我不确定这会对我们在整个数据库中拥有的许多其他触发器产生什么影响。
谢谢!