SQLCLR(三)触发器

2016-02-19 13:49 3 1 收藏

下面是个超简单的SQLCLR(三)触发器教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

  这一节比较简单了,主要是讲如何在SQLCLR下设计触发器。在SQLServer2005里分两种触发器,DDL和DML两种触发器。DDL触发器是响应CREATE、ALTER 和 DROP 开头的语句。我们常用的是DML触发器,这一类触发器响应当数据库中发生数据操作包括表或视图中修改数据的 INSERT 、UPDATE 或 DELETE 。

  对于.net来讲触发器也是方法,在上方标注[Microsoft.SqlServer.Server.SqlTrigger]标签(只我这样翻译)。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  我们看一个小例子

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

  再看结果

  题外话:上午比较不忙,随手写了第三篇。都这个时候了公司领导层还在想搞什么视频分享,国内的视频分享类网站已经倒了一批又一批了,仅有一些苟活于世,表面大红大紫的日子也未必好过,VC哪能那么容易就掏钱出来给你烧,哎!最近比较郁闷,忙完手上这点活,想换份工作了。

来源:http://www.tulaoshi.com/n/20160219/1605335.html

延伸阅读
Conventions and Styles约定和编程风格 每次我想要演示实际代码时,我会对mysql客户端的屏幕就出现的代码进行调整,将字体改成Courier,使他们看起来与普通文本不一样(让大家区别程序代码和正文)。在这里举个例子: mysql DROP FUNCTION f; Query OK, 0 rows affected (0.00 sec) 如果实例比较大,则需要在某些行和段落间加注...
标签: SQLServer
如果一个触发器在执行操作时引发了另一个触发器,而这个触发器又接着引发下一个触发器……这些触发器就是嵌套触发器。触发器可嵌套至 32 层,并且可以控制是否可以通过"嵌套触发器"服务器配置选项进行触发器嵌套。 如果允许使用嵌套触发器,且链中的一个触发器开始一个无限循环,则超出嵌套级,而且触发器将终止。 可使用嵌套触发器...
MySQL从5.0.2版开始引入触发器,触发器就是一个已命名的数据库对象,这个对象和某张表 相关,而且当这张表发生某种特定事件后,触发器将被激活执行相应的动作,触发器允许这 些动作在这张表中的一行或多行的数据被操作的前后执行。在流行业务系统的处理过程中,开发和管理人员可以用触发器来实现数据审计和其他安全相关的功能,如在运行中...
2、触发器的类型有: 触发器类型: 1、 语句触发器 2、 行触发器 3、INSTEAD OF触发 4、 系统条件触发器 5、 用户事件触发器 2.1、语句级触发器.(语句级触发器对每个DML语句执行一次) 是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器。能够与INSERT、UPDATE、DELETE...
一 Oracle触发器语法 触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。 功能: 1、 允许/限制对表的修改 2、 自动生成派生列,比如自增字段 3、 强制数据一致性 4、 提供审计和日志记录 ...

经验教程

674

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部