SQL Server 2005 Вставить триггер с оператором обновления - PullRequest
0 голосов
/ 26 августа 2009

В настоящее время я не в состоянии проверить все это, но хотел бы знать, если это вариант, чтобы я мог начать разработку решения в моей голове.

Я хотел бы создать триггер вставки для таблицы. В этом триггере вставки я хотел бы получить значения из виртуальной таблицы inserted и использовать их для обновления той же таблицы. Будет ли это работать или мы войдем в какой-то бесконечный цикл (даже если триггер не для команд обновления).

В качестве примера, если была вставлена ​​строка (которая представляет новую ставку / стоимость для поставщика), я хотел бы обновить ту же таблицу, чтобы истечь старая ставка / стоимость для этого поставщика. Истечение срока действия необходимо по сравнению с обновлением уже существующей записи, поэтому история ставок / затрат может быть сохранена для целей отчетности (не говоря уже о том, что текущая инфраструктура отчетности ожидает такого рода события, и мы переносим текущие отчеты / данные в SQL Server).

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 августа 2009

Если у вас есть только триггер INSERT и нет триггера UPDATE, тогда никаких проблем не возникает, но я предполагаю, что вы хотите перехватить также UPDATE и, возможно, даже DELETE.

Триггеры INSTEAD OF гарантированно не будут вести себя рекурсивно:

Если триггер INSTEAD OF определен для таблица выполняет оператор против стол, который обычно запускает Триггер INSTEAD OF снова, триггер не вызывается рекурсивно

С помощью триггера и INSTEAD OF вы должны выполнить как оригинальную INSERT, так и UPDATE по вашему желанию.

0 голосов
/ 26 августа 2009

Не похоже, что это вызовет у меня какие-либо проблемы, при условии, что вы не делаете INSERT в другом триггере UPDATE.

...