Как я могу обновить небольшое поле в большой таблице SQL, если другое поле в той же строке изменено внешним процессом? - PullRequest
0 голосов
/ 24 января 2009

Я бы хотел вызвать Обновить ... Установить ... Где ... обновить поле, как только этот злой процесс ERP изменит значение другого.

Я использую MS SQL.

Ответы [ 3 ]

3 голосов
/ 24 января 2009

Я не могу проверить, но я думаю, это триггер, как этот

CREATE TRIGGER TriggerName ON TableName FOR UPDATE AS
  IF UPDATE(ColumnUpdatedByERP)
  BEGIN
    UPDATE ...
  END

- Edit - лучшая версия, спасибо за комментарий Tomalak

 
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
3 голосов
/ 24 января 2009

Вы можете использовать триггер для обновления другого поля.

Редактировать: Я думаю, это может зависеть от того, какую базу данных SQLesque вы используете.

1 голос
/ 25 января 2009

Вы хотите использовать триггер, но я бы очень опасался ошибки в выбранном ответе. См. Хорошо написанное сообщение Брента Озара http://www.brentozar.com/archive/2009/01/triggers-need-to-handle-multiple-records/ на нескольких записях.

...