0

更新可能なサブスクリプションでトランザクションレプリケーションを使用しています。パブリッシャーでのレプリケーション用に選択されたテーブルの1つに更新のトリガーを追加すると、次のエラーが発生します。

Maximum stored procedure, function,trigger, 
or view nesting level exceeded(limit 32)

私のトリガーコードは

create trigger Isupdated 
    on tbl_worker 
    for update as 
        update tbl_worker SET 
           Isup=1 
        where id= (select id from inserted)

どうしたの?

4

2 に答える 2

0

再帰的な(ネストされた)トリガーを作成したようです。

おそらく、トリガーがテーブルの更新を引き起こし、トリガーが再度起動される原因になっていますか?

コードを投稿すると、問題が何であるかを正確に説明するのに役立ちます。

于 2011-04-20T12:04:28.120 に答える
0

http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-programming/4752/Maximum-stored-procedure-function-trigger-or-view

上記のリンクは、ネストをトリガーするためのソリューションを提供します。これは、既にトリガーがあり、レプリケーションによって別のトリガーが追加される場合に非常に役立ちます。機能に関連するコードとレプリケーションに関連するコードを混在させる必要がないため、トリガーを組み合わせるよりもこれが好きです。

解決策を要約すると:

sp_settriggerorderを使用してトリガーに順序を割り当て、最初に起動するように設定したトリガーの先頭に次のチェックを追加して、他のトリガーによって起動されないようにすることで、ネストされた起動が発生しないようにすることができます。

CREATE TRIGGER .... TRIGGER_NESTLEVEL>1RETURNの場合

于 2011-07-27T09:53:03.137 に答える