Обнаружена ошибка при использовании триггера обновления с репликацией транзакций. - PullRequest
0 голосов
/ 20 апреля 2011

Я использую репликацию транзакций с обновляемой подпиской.Когда я добавляю триггер для обновления в одну из моих таблиц, выбранную для репликации в издателе, я сталкиваюсь с этой ошибкой:

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)

что не так

Ответы [ 2 ]

0 голосов
/ 27 июля 2011

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

Приведенная выше ссылка предоставляет решение для запуска вложения. Это может быть очень полезно, когда у вас уже есть триггер, а затем репликация добавляет еще один. Мне это нравится больше, чем объединение триггеров, потому что это не заставляет вас смешивать код, связанный с функциональностью, и код, связанный с репликацией.

Чтобы подвести итог решения:

Вы можете предотвратить возникновение вложенной стрельбы, назначив триггеры. ордер с sp_settriggerorder и добавьте следующую проверку к начало триггера, который вы установили, чтобы сработать первым, чтобы предотвратить его срабатывание другой триггер:

СОЗДАТЬ ТРИГГЕР .... ЕСЛИ TRIGGER_NESTLEVEL> 1 ВОЗВРАТ

0 голосов
/ 20 апреля 2011

Похоже, вы написали рекурсивный (он же вложенный) триггер .

Возможно, триггер вызывает обновление таблицы, вызывая повторный запуск триггера?

Если вы разместите код, это поможет нам точно объяснить, в чем проблема.

...