微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLCLR三触发器

SQLCLR(三)触发器

这一节比较简单了,主要是讲如何在sqlCLR下设计触发器。在sqlServer2005里分两种触发器,DDL和DML两种触发器。DDL触发器是响应CREATE、ALTER 和 DROP 开头的语句。我们常用的是DML触发器,这一类触发器响应当数据库中发生数据操作包括表或视图中修改数据的 INSERT 、UPDATE 或 DELETE 。
对于.net来讲触发器也是方法,在上方标注[Microsoft.sqlServer.Server.sqlTrigger]标签(只我这样翻译)。
我们看一个小例子

using  System;

using  System.Data;

using  System.Data.sql;

using  Microsoft.sqlServer.Server;

using  System.Data.sqlClient;


public  partial  class  Triggers

{

    
//Name触发器的名字

    
//Target触发器对应表

    
//Event可以是{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [,] [ UPDATE ] [,] [ DELETE ] }

    [Microsoft.sqlServer.Server.sqlTrigger(Name = "NameInfoTrigger", Target = "NameInfo", Event = "FOR UPDATE")]

    
public static void GetChange()

    
{

        
using (sqlConnection cn = new sqlConnection())

        
{

            cn.ConnectionString 
= "context connection=true";

            cn.open();

            
using (sqlCommand cmd = cn.CreateCommand())

            
{

                cmd.CommandText 
= "insert into ChangeHistory select b.name + '->' + a.name,getdate() from INSERTED a JOIN DELETED b ON a.id = b.id";

                sqlContext.Pipe.ExecuteAndSend(cmd);

            }

        }

    }

}


右键部署

数据库里的两张表


我执行两条UPDATE语句

update   [ NameInfo ]   set   [ name ] = ' David '   where  id = 1

update   [ nameinfo ]   set   [ name ] = ' Fan '   where  id = 2
结果


再执行两条

update   [ NameInfo ]   set   [ name ] = ' *David* '   where  id = 1

update   [ nameinfo ]   set   [ name ] = ' *Fan* '   where  id = 2
再看结果
 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐