Значение столбца обновления триггера SQL Server - PullRequest
2 голосов
/ 10 марта 2012

Мне нужен пример базового триггера SQL, теперь я объясню:

У меня есть таблица с 5 столбцами (column1, power, column3, column4, times)

значение «мощности» изменяется в реальном времени (являются числами), а его тип данных «реальный» в то время как тип данных "times" равен 'int'

я бы запустил, чтобы каждый раз, когда «мощность» увеличивалась в 0 раз, увеличивалась на 1

извините, если мой английский не идеален! и надеюсь, что вы поняли, что я имею в виду! если что-то не ясно, скажите мне, и я постараюсь объяснить лучше! :)

Ответы [ 2 ]

4 голосов
/ 10 марта 2012

Возможный базовый триггер:

create trigger MyBasicTrigger on MyBasicTable
after insert, update
as
--  Trigger rowcount should not mess with update that triggered it, search for it in documentation provided here
   set NoCount ON
-- If power is mentioned in update/insert statement at all
   if update(Power)
   begin
   -- Update times for each changed row that has value of power 0
   -- Inserted table holds new values in updated rows
   -- You didn't mention your PK column(s), so I assume the name would be "ID"
      update MyBasicTable set Times = Times + 1
      from MyBasicTable inner join inserted on MyBasicTable.ID = inserted.ID
      where Inserted.Power = 0
   end

Документация для NoCount и обновления (power) составляет здесь .

2 голосов
/ 10 марта 2012

Предполагая, что column1 является первичным ключом, общая форма триггера выглядит следующим образом:

create trigger MyPower
on MyTable
after insert, update
as
  if exists (select column1 
             from inserted i join MyTable m
             on i.column1 = m.column1
             and i.power = 0)
    update MyTable set times = times + 1 
    where exists (select column1 from inserted i 
              join MyTable m
              on i.column1 = m.column1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...