2013-04-09 6 views
6

Mam tabelę o nazwie Tabela1 z dwoma polami Systemname i Updatecount. Każda wkładka o nazwie System "SAP" powinna ustawić Updatecount na 1 (wartość początkowa). Jeśli nazwa systemowa pola otrzymuje aktualizację ze zdefiniowaną wartością "SAP", wartość pola w górę powinna zostać zwiększona o 1.Wyzwalacz MSSql na włożeniu aktualizacji (Updatecounter)

Jak zdefiniować wyzwalacz?

Odpowiedz

5
create trigger tr on Table1 for insert,update 
as 
begin 
    if update(Systemname) 
     update Table1 
      set UpdateCount = (case when not exists(select * from deleted) then 1 else UpdateCount + 1 end) 
     from Table1 
     inner join inserted on Table1.[<YourPKField>] = inserted.[<YourPKField>] 
     where inserted.Systemname = 'SAP' 
end 
GO 
3

Jest dobry artykuł na temat wyzwalaczy tutaj:

http://www.codeproject.com/Articles/38808/Overview-of-SQL-Server-database-Triggers

Musisz utworzyć:

CREATE TRIGGER [TRIGGER_ALTER_COUNT] ON [dbo].[tblTriggerExample] 
FOR INSERT, UPDATE 
AS 
BEGIN 
DECLARE @Var INT 
SELECT @Var = COUNT(*) FROM INSERTED 
UPDATE [dbo].[tblTriggerExample] SET AlterCount = AlterCount + Var 
      ,LastUpdate = GETDATE() 
    WHERE TransactionID = @TransID 
SELECT @Var = COUNT(*) FROM UPDATED WHERE SystemNAme = 'Var' 
UPDATE [dbo].[tblTriggerExample] SET AlterCount = AlterCount + @Var 
      ,LastUpdate = GETDATE() 
    WHERE TransactionID = @TransID 
END 
+0

Dzięki za powiązanie tego artykułu. – callisto