2012-03-01 9 views
1

とき、私は、次のエラーメッセージが表示されます以下のコードブロックトリガーネストレベルを超えましたか?

alter TRIGGER [dbo].[locations_update_geometry_After] 
ON dbo.TBL_LOCATIONS 
for update 
AS 
    INSERT dbo.TBL_LOCATIONS(SHAPE, X_Coord, Y_Coord,objectid) 
    SELECT a.Shape, a.X_Coord, a.Y_Coord, a.objectid 
    FROM 
    ( 
    SELECT 
     SHAPE = CASE WHEN SHAPE IS NOT NULL 
     THEN SHAPE ELSE Geometry::STPointFromText('POINT(' 
      + CAST(X_Coord AS VARCHAR(20)) + ' ' 
      + CAST(Y_Coord AS VARCHAR(20)) + ')', 26917) END, 
     X_Coord = CASE WHEN SHAPE IS NULL THEN X_Coord ELSE SHAPE.STX END, 
     Y_Coord = CASE WHEN SHAPE IS NULL THEN Y_Coord ELSE SHAPE.STY END, 
     objectid 
    FROM inserted 
) AS a 

に含まれている。このトリガー火災、:

編集内容を保存することができません。基盤となるDBMSエラー[Microsoft SQL Server ネイティブクライアント10:最大ストアドプロシージャ、ファンクション、トリガ、またはビュー ネストレベルを超えました(制限32)。

私はこのテーブルに関連するものは32個ありません。何か案は?

答えて

4

はい、トリガーはメッセージを送信する前に32回実行されます。この

IF ((
SELECT TRIGGER_NESTLEVEL()) > 1) 
RETURN 
+0

「INSTEAD UPDATE OF」をご覧くださいかもしれない私は同じエラーを持っているが、それは私が私の中に持っている他のトリガーが好きではありません。 DBどこにこの文を挿入すればよいですか? – Andrey

関連する問題