2009-11-23 4 views
1

я создаю триггер обновления, который идет как это (SQL Server 2005):SQL триггер 1 строка в то время

Является ли состояние столбец строки 23 или 25 не обновлять его. Просто обновите его. Это очень просто. Я пытаюсь

OldState = (Select State from Deleted) 

If OldState in (25,23) 
    Update it --how to do it easily? 
else 
    dont do nothing for this row 

Проблема заключается в том, что триггер вызывается со всеми изменяемыми строками, поэтому удаленным это набор, это означает, что первая инструкция не будет работать, потому что он пытается получить только 1 значение и его получает набор.

Это что-то так просто, я чего-то не хватает?

Большое спасибо

ответ

3

Этот код предполагает:

  • ключ остается тем же связать «старые» и «новые» строки
  • вам нужна простая обработка после обновления

Пример:

UPDATE 
    M --yes, this is correct 
SET 
    SomeCol = SomeValue, 
    ... 
FROM 
    MyTable M 
    JOIN 
    DELETED D ON M.KeyCol = D.KeyCol 
WHERE 
    D.State IN (23, 25) 
+0

Ничего себе ты босс! Я никогда не обновлялся с FROM, это для меня ново! Спасибо !!! –

Смежные вопросы