1

見た目はほとんど同じですが、わずかな違いがある2つのトリガーがあります

トリガー1

create trigger tr_EligebilityCheckSRmonth
on dbo.Clients
after INSERT,UPDATE
as 

BEGIN
UPDATE Clients 
SET 
StatusID = 5
WHERE 
ClientID IN (Select ClientID
             from Clients c 
             join IncomeEligibility i 
                  on c.HshldSize = i.HshldSize
             where c.HshldSize= i.HshldSize 
                   and c.AnnualHshldIncome >= i.SeniorMo 
                   and StatusID in (1,2) 
                   and c.CategCode = 'SR' 
                   and MonthlyYearly ='month')
END

トリガー2

create trigger tr_EligebilityCheckSRyear
on dbo.Clients
after INSERT,UPDATE
as 

BEGIN
UPDATE Clients 
SET 
StatusID = 5
WHERE 
ClientID IN (Select ClientID
             from Clients c 
             join IncomeEligibility i 
                  on c.HshldSize = i.HshldSize
             where c.HshldSize= i.HshldSize 
                   and c.AnnualHshldIncome >= i.SeniorMo 
                   and StatusID in (1,2) 
                   and c.CategCode = 'SR' 
                   and MonthlyYearly ='year')
End

このように挿入ststamnetを送信すると

INSERT INTO Clients (ClientID, LastName, FirstName, MidInitial, DOB, Address, Address2, City, Zip, Phone, CategCode, StatusID, Hispanic, EthnCode, LangID, ClientProxy, Parent, HshldSize, AnnualHshldIncome, MonthlyYearly, PFDs, WIC, Medicaid, ATAP, FoodStamps, AgencyID, RoutID, DeliveryNotes, AppDate, CertifiedDate, Notes)
VALUES (13542,'Test','Test',null,'1982-10-20','P.O. Box 5',null,'TEST',99999,'(907) 111-1111','SR',1, 0, 'W',1, null, null,3,1000000,'year',0,0, 1,  0,1,45, null,null,'2011-04-27', null,null);

エラーをスローします

*メッセージ217、レベル16、状態1、プロシージャtr_EligebilityCheckSRyear、行28
最大ストアドプロシージャ、関数、トリガー、またはビューのネストレベルを超えました(制限32)。*

私はそれらを1つのトリガーに組み合わせて、他のIFを使用しようとしましたが、問題はありません。システムに1つしかない場合は機能しますが、2つある場合はエラーが発生します。この問題を解決するにはどうすればよいですか?ここで他の投稿を確認しましたが、役立つものが見つかりません。

4

1 に答える 1

1

トリガーがバインドされているテーブルに対して、トリガーで発行および UPDATE を実行すると、期待どおりの結果が得られません。更新コードがトリガー コード内にあるからといって、update ステートメントによってトリガーが何度も何度も起動されないわけではありません。役立つ場合は、更新または削除されたレコードを表す UPDATED および DELETED のカーソルを取得できます。

于 2013-03-05T03:53:29.493 に答える