grimboite/articles/dev/created-lastmodified-trigge...

1.0 KiB

http://snipplr.com/view/2595/ https://stackoverflow.com/questions/25568526/sql-server-after-update-trigger#29052016

USE [RPS]
GO
/****** Object:  Trigger [dbo].[Person_LastModifiedDate]    Script Date: 15/11/2016 15:54:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Person_LastModifiedDate] ON [dbo].[Person]
FOR UPDATE
AS
	--- update lastmodified field
	UPDATE Person SET Person.LastModified = getdate()
	FROM Person INNER JOIN Inserted ON Person.Uid = Inserted.Uid

	--- insert into rps_person_history
	DECLARE @id int
	DECLARE @result nvarchar(MAX)
	DECLARE mycursor CURSOR FOR
		SELECT UID FROM inserted
    OPEN mycursor

    FETCH NEXT FROM mycursor INTO @id
    WHILE @@FETCH_STATUS = 0
		BEGIN
			SET @result = (SELECT * FROM PERSON WHERE UID = @id FOR XML PATH('Person'))
			INSERT INTO [RPS].[dbo].[RPS_Person_History] ([UID],[Action],[UpdatedTable],[Data]) VALUES (@id, 'Update','Person', @result)
			FETCH NEXT FROM mycursor INTO @id
		END
	CLOSE mycursor
	DEALLOCATE mycursor