我创建了触发器来记录所有更新的行,无论是一行还是多行,并将更新的行记录到另一个表中.触发器正常工作,有一条记录但是当我更新整个表时,例如:update TBL_ADM_USER_GROUP set name = '123'只记录一条记录TBL_TestTable?为什么只有一行登录TBL_TestTable以及如何启用此触发器来记录所有更新的行?
触发:
CREATE TRIGGER [dbo].[Group_Update]
ON [dbo].[TBL_ADM_USER_GROUP]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @userid INT
DECLARE @name nvarchar(1000)
SELECT @userid = i.changer_user_id from inserted i;
select @name = i.name from inserted i;
INSERT INTO TBL_TestTable
VALUES (CONCAT('Group "' ,@name,'" is updated'), 'GROUP', 'Update', SYSDATETIME(), @userid)
END
Run Code Online (Sandbox Code Playgroud)
在SQL Server触发器中每个语句都有效,而不是逐行.使用:
CREATE TRIGGER [dbo].[Group_Update]
ON [dbo].[TBL_ADM_USER_GROUP]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO TBL_TestTable -- define column list for clarity
SELECT CONCAT('Group "' ,i.name,'" is updated'),
'GROUP', 'Update', SYSDATETIME(),
i.changer_user_id
FROM inserted i;
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33 次 |
| 最近记录: |