程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> SQLCLR(三)觸發器

SQLCLR(三)觸發器

編輯:.NET實例教程
這一節比較簡單了,主要是講如何在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再看結果
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved