この更新トリガーを機能させるのに問題があります。私がやろうとしていることさえ可能かどうか疑問に思っています。
したがって、tblCustomers
フィールドを持つ顧客のテーブルがあります。
ActivationStatus
RateClass
ParentCustomerID
(この顧客が「子」である顧客 (存在する場合) を示します)
親 Customer でUPDATE が発生するたびに、ActivationStatus
子RateClass
Customer も同じ値で更新する必要があります。
私は現在持っています:
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
データベース全体にある他の多くのトリガーにどのような影響があるのか わからないため、実行したくないことに注意してください.
ありがとうございました!