Надеюсь, это достаточно простой вопрос для любого SQL-человека ...
У нас есть таблица, которая содержит данные конфигурации системы, и она связана с таблицей истории с помощью триггеров, чтобы мы могли отслеживать, кто что изменил и когда.
У меня есть требование добавить еще одно значение в эту таблицу, но оно часто будет меняться от кода, и есть требование, чтобы мы не отслеживали его историю (мы не хотим засорять таблицу много тысяч обновлений в день.
В настоящее время наш триггер выглядит примерно так ...
CREATE TRIGGER
[dbo].[SystemParameterInsertUpdate]
ON
[dbo].[SystemParameter]
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
INSERT INTO SystemParameterHistory
(
Attribute,
ParameterValue,
ParameterDescription,
ChangeDate
)
SELECT
Attribute,
ParameterValue,
ParameterDescription,
ChangeDate
FROM Inserted AS I
END
Я хотел бы иметь возможность добавить некоторую логику, чтобы остановить создание записи, если в качестве значения столбца Attribute задана конкретная строка (например, «NoHist _»)
Учитывая, что у меня почти нет опыта работы с триггерами, мне было интересно, как лучше всего это реализовать ... Я пробовал предложение where, подобное следующему
where I.Attribute NOT LIKE 'NoHist_%'
но, похоже, это не работает. Значение все еще копируется в таблицу истории.
Буду признателен за любую помощь, которую вы можете предложить.
ОК - как и предсказывал Cade Roux, этот эффект впечатляюще проваливается при нескольких обновлениях. Я собираюсь принять новый подход к этому. У кого-нибудь есть другие предложения, пожалуйста?
Ребята - Пожалуйста, расскажите мне здесь ... Почему LEFT () предпочтительнее LIKE в этом сценарии? Я знаю, что принял ответ, но я хотел бы знать, для моего собственного образования.