触发器嵌套级别超出了?

问题描述:

当该触发器被触发,这是包含在下面的代码块触发器嵌套级别超出了?

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个与此表相关的任何东西。有任何想法吗?

是的,触发器在投掷消息前执行32次;为了阻止这样做,使用这种

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

我有同样的错误,但它不喜欢我在其他触发我的数据库我应该在哪里插入这个声明? – Andrey 2013-03-05 02:39:40

你可能应该看看“而不是更新的”

http://technet.microsoft.com/en-us/library/ms188601(v=sql.105).aspx