标签归档:触发器

mssql sqlserver 使用ssms查看指定数据表下的触发器的方法分享


摘要:
下文讲述使用SSMS管理器查看”数据表”下的触发器的方法分享,如下所示:
实验环境:sql server

下面将通过举例的方式,介绍查看使用SSMS 查看指定数据表下触发器的方法,如下所示:

   ---创建表触发器
   create table [maomao365.com](
    keyId int identity(1,1) primary key,
    info varchar(80),
    infoExtend char(30)
)
go

--创建insert触发器
create trigger trig_insert
on [maomao365.com]
after insert
as
begin
    --print 触发器脚本信息
	print 'ok';
end
go

mssql_sqlserver_ssms_查看特定数据表触发器的方法

mssql_sqlserver_ssms_查看特定数据表触发器的方法


相关阅读:
mssql sqlserver 触发器汇总专题

mssql sqlserver 触发器中Inserted和deleted简介说明


摘要:
下文讲述sqlserver触发器中inserted和deleted对象中的相关说明,如下所示:
实验环境:sql server 2008 R2


inserted和deleted表是触发器中一些特殊的表
—————————–
Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行集合,
当对数据表进行插入或更新操作时,此时整个受影响的数据行都会被存储在inserted表中
—————————–
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行集合,
当对数据表进行删除或更新操作时,在操作前,数据库引擎会将受影响的数据行–修改前的集合存储在deleted表中。
—————————————————
1.插入操作(Insert)
Inserted表有数据,Deleted表无数据

2.删除操作(Delete)
Inserted表无数据,Deleted表有数据

3.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)

—————–注意事项:
inserted和deleted数据表中都可能存储多行数据


触发器引用举例

 create trigger tr_test
     on testTable
    for update
  as
   begin 
       
	   ---操作前的数据
	   insert into testTableLog
	   ([列名1],...)
	   select  [列名1],...  from deleted 
	        

		---操作后的数据
	   insert into testTableLog
	   ([列名1],...)
	   select  [列名1],...  from inserted 


   end

mssql sqlserver 使用触发器监控某个字段是否被修改


摘要:
下文讲述sqlserver中使用触发器监控指定字段是否发生变化的方法分享,如下所示:
实验环境:sql server 2008 R2



应用背景:
今天同事让我们制作一个功能,当数据表中的指定字段被修改后,将日志信息放入到指定的数据表上,此处我们采用了触发器实现此功能

    ---创建触发器
create trigger [tig_log] on  数据表名称
after update  
as 
begin
       --数据表必须有主键,不然无法关联数据
        ---例:检测字段info 是否发生变化 keyId 为数据表中的主键
       select @flag int   ---不等于0代表指定字段发生过变化
       select @flag   =
            case when a.info =b.info then 0 else 1
            end 
       from inserted a left join deleted b on a.keyId = b.keyId 
end