я не могу проверить, но я думаю, его триггер, как этот
CREATE TRIGGER TriggerName ON TableName FOR UPDATE AS
IF UPDATE(ColumnUpdatedByERP)
BEGIN
UPDATE ...
END
- Edit - лучший вариант, спасибо за комментарий Томалак
CREATE TRIGGER TriggerName ON TableName FOR UPDATE AS
DECLARE @oldValue VARCHAR(100)
DECLARE @newValue VARCHAR(100)
IF UPDATE(ColumnUpdatedByERP)
BEGIN
SELECT @oldValue = (SELECT ColumnUpdatedByERP FROM Deleted)
SELECT @newValue = (SELECT ColumnUpdatedByERP FROM Inserted)
IF @oldValue <> @newValue
BEGIN
UPDATE ...
END
END
IF UPDATE() проверяет, было ли поле указано только в инструкции UPDATE. Он вернет true, даже если значение поля не было изменено. Это не то, что имел в виду ОП, возможно, вы захотите изменить свой код, чтобы он сравнивался со «вставленной» таблицей. – Tomalak
Это лучше. +1 Вы можете присоединиться к вставленным и удаленным, чтобы удалить необходимость в дополнительных переменных: IF (SELECT CASE WHEN d.TheColumn = i.TheColumn THEN 0 ELSE 1 END FROM deleted d, вставленный i) = 1 ... – Tomalak
Это также игнорирует проблема нескольких строк, обновленных триггером! – Josef