· 7 years ago · Feb 16, 2019, 02:06 PM
1IF EXISTS (SELECT [UserId] FROM inserted EXCEPT SELECT [UserId] FROM deleted)
2BEGIN
3 UPDATE [MyTable] SET [UserIdModified] = SYSUTCDATETIME() FROM [inserted] WHERE [MyTable].[Id] = [inserted].[Id]
4END
5
6IF UPDATE([UserId]) AND EXISTS...)
7BEGIN
8...
9END
10
11DROP TABLE IF EXISTS [MyTable]
12GO
13CREATE TABLE [MyTable] ([Id] INT IDENTITY NOT NULL PRIMARY KEY, [UserId] INT, [UserIdModified] DATETIME2)
14GO
15CREATE TRIGGER [trgMyTableUserIdModified]
16ON [MyTable]
17AFTER INSERT, UPDATE
18AS
19BEGIN
20 IF EXISTS (SELECT [UserId] FROM inserted EXCEPT SELECT [UserId] FROM deleted)
21 BEGIN
22 UPDATE [MyTable] SET [UserIdModified] = SYSUTCDATETIME() FROM [inserted] WHERE [MyTable].[Id] = [inserted].[Id]
23 END
24END
25GO
26INSERT INTO [MyTable] ([UserId]) VALUES (1)
27SELECT *, 'Initial.' FROM [MyTable]
28UPDATE [MyTable] SET [UserId] = 2
29SELECT *, 'Time should be updated.' FROM [MyTable]
30UPDATE [MyTable] SET [UserId] = 2
31SELECT *, 'Time should not be updated.' FROM [MyTable]
32UPDATE[MyTable] SET [UserId] = NULL
33SELECT *, 'Time should be updated.' FROM [MyTable]
34UPDATE[MyTable] SET [UserId] = NULL
35SELECT *, 'Time should not be updated.' FROM [MyTable]