Когда делают триггерный огонь и когда не делают их

Как @CQ заявляет, необходимо использовать HttpUtility. HtmlDecode, но это не доступно в проекте.NET не-ASP по умолчанию.

Для приложения.NET не-ASP, необходимо добавить ссылку на System.Web.dll. Щелкните правой кнопкой по своему проекту в Проводнике Решения, выберите, "Добавьте Ссылка", тогда просмотрите список для System.Web.dll.

Теперь, когда ссылка добавляется, необходимо быть в состоянии получить доступ к методу с помощью полностью определенного имени System.Web.HttpUtility.HtmlDecode или вставить using оператор для System.Web для создания вещей легче.

8
задан Nathan W 9 August 2009 в 05:53
поделиться

4 ответа

Когда вы хотите, чтобы они сработали?

CREATE TRIGGER AFTER ACTION

Это выполняется после принятия действия ( вставить обновление, удаление ). INSTEAD OF запускает триггер вместо действия.

Одна из самых больших ошибок с триггерами заключается в том, что они срабатывают всякий раз, когда выполняется действие, , даже если никакие строки не затронуты . Это не ошибка, и это то, что может сжечь вас довольно быстро, если вы не будете осторожны.

Кроме того, с триггерами вы будете использовать вставленные и удаленные ] таблицы. Обновленные строки перечислены в обоих. Это сбивает с толку многих людей, потому что они не привыкли думать об обновлении как об delete , затем insert .

19
ответ дан 5 December 2019 в 05:45
поделиться

Следующий оператор запускает триггер обновления только один раз.

Любой оператор типа действия запускает триггер только один раз, независимо от того, сколько строк затронуто, триггеры должны быть написаны для обработки нескольких вставок / обновлений / удалений строк.

Если ваш триггер зависит только от одной строки, находящейся в вставленные или удаленные псевдотаблицы, это не сработает. И что еще хуже, он не выйдет из строя с ошибкой, он просто не повлияет на все строки, на которые вы хотите повлиять, независимо от того, что делает триггер. Не исправляйте это с помощью цикла или курсора в триггере, перейдите на логику на основе наборов. Курсор в триггере может привести к остановке всего вашего приложения, в то время как транзакция из 500 000 записей обрабатывает и блокирует таблицу на несколько часов.

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

3
ответ дан 5 December 2019 в 05:45
поделиться

В 2008 году вы можете использовать встроенный Система отслеживания измененных данных

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

· Таблица отбрасывается .

· Таблица усечена.

· Настройки для вложенных и / или рекурсивных триггеров предотвращают запуск триггера.

· Данные загружаются массово, минуя триггеры.

5
ответ дан 5 December 2019 в 05:45
поделиться

Я подумал, что выделю из ссылки, которую Эрик опубликовал, ситуацию, в которой триггер не срабатывает:

Хотя инструкция TRUNCATE TABLE фактически является DELETE, она не может активировать триггер поскольку операция не регистрирует удаления отдельных строк. Однако только те, у кого есть разрешения на выполнение TRUNCATE TABLE в таблице, должны беспокоиться о непреднамеренном обходе триггера DELETE с помощью оператора TRUNCATE TABLE.

2
ответ дан 5 December 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: