2013-04-09 27 views
6

Ho una tabella denominata Table1 con due campi Systemname e Updatecount. Ogni inserto con Systemname "SAP" dovrebbe impostare Updatecount su 1 (valore iniziale). Se il campo Nome sistema riceve un aggiornamento con il valore definito "SAP", Field Updatecount deve essere aumentato di 1.MSSql Trigger su Update Insert (Updatecounter)

Come definire il trigger?

risposta

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

C'è un buon articolo su trigger qui:

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

È necessario creare:

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

Grazie per il collegamento dell'articolo. – callisto

Problemi correlati