SQL Server -使用表触发器记录表插入,更新,删除行数

1、如何使用sql获取当前session用户名和机器名

Select CURRENT_USER,Host_name()

2、如何在表触发器中获取当前表名称

SELECT OBJECT_SCHEMA_NAME(parent_id)+'.'+OBJECT_NAME(parent_id) FROM sys.triggers

触发器完整代码

ALTER TRIGGER dbo.DimTest_AdutitTriger ON dbo.DimTest AFTER INSERT,DELETE,UPDATE

AS 

BEGIN

            SET NOCOUNT ON;

           declare @tbName varchar(256)

            SELECT @tbName='dbo.DimTest'

            DECLARE @action as varchar(20),@Count int=0;

SET @action='INSERT';

IF EXISTS(SELECT *FROM DELETED)

BEGIN

          SET @action=

                  CASE

                           WHEN EXISTS(SELECT * FROM INSERTED) THEN 'UPDATE'

                            ELSE 'DELETE'

                    END

 END

ELSE

         IF NOT EXISTS(SELECT *FROM INSERTED)RETURN;

                    IF(@action='INSERT' or @action='UPDATE')

                    BEGIN 

                                set @Count=(select count(*) from INSERTED)

                    END

                    IF @action='DELETE'

                     BEGIN

                                  set @Count=(select count(*) from INSERTED)

                     END

                     IF @action='DELETE'

                      BEGIN

                                     set @Count=(select count(*) from DELETED)

                      END

                       insert into db0.AuditTable

                        select getdate(),CURRENT_USER,Host_name(),null,@tbName,'dim',@action,@Count

END

GO

 

转载于:https://www.cnblogs.com/zzp0320/p/7080848.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值