В нашей реальной/производственной базе данных я пытаюсь добавить триггер в таблицу, но безуспешно. Я пытался несколько раз, но для завершения оператора триггера создания потребовалось более 30 минут, и я отменил его.
Эта таблица часто читается/записывается несколькими разными процессами. Я отключил запланированные задания, обновляющие таблицу, и пытался выполнять их в те моменты, когда в таблице меньше активности, но я не могу остановить все, что обращается к таблице.
Я не думаю, что есть проблема с самим оператором создания триггера. Оператор создания триггера был успешным и быстрым в тестовой среде, и триггер работает правильно, когда строки вставляются/обновляются в таблицу. Хотя, когда я создал триггер в тестовой базе данных, нагрузка на таблицу была невелика, и в ней было значительно меньше строк, чем в реальной/производственной базе данных (100 против 13 000 000+).
Вот оператор создания триггера, который я пытаюсь запустить
CREATE TRIGGER [OnItem_Updated]
ON [Item]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF update(State)
BEGIN
/* do some stuff including for each row updated call a stored
procedure that increments a value in table based on the
UserId of the updated row */
END
END
Могут ли возникнуть проблемы с созданием триггера для таблицы, когда строки обновляются или если в ней много строк?
В SQLServer триггеры создаются включенными по умолчанию. Можно ли сделать триггер отключенным по умолчанию?
Любые другие идеи?