C#添加SQL SERVER 2008的触发器-阿里云开发者社区

开发者社区> 开发与运维> 正文

C#添加SQL SERVER 2008的触发器

简介: C#可以为SQL SERVER 2008添加触发器,步骤为 在C#中,选择"新建项目"->"数据库"->"SQL Server"->"Visual C# SQL CLR 数据库" 在项目中,单击右键选择"添加"->"触发器",代码如下(ValidateYear.

C#可以为SQL SERVER 2008添加触发器,步骤为

在C#中,选择"新建项目"->"数据库"->"SQL Server"->"Visual C# SQL CLR 数据库"

在项目中,单击右键选择"添加"->"触发器",代码如下(ValidateYear.cs):

 1 using System;
 2 using System.Data;
 3 using System.Data.SqlClient;
 4 using Microsoft.SqlServer.Server;
 5 
 6 
 7 public partial class Triggers
 8 {
 9     // 为目标输入现有表或视图并取消对特性行的注释
10     [Microsoft.SqlServer.Server.SqlTrigger (Name="ValidateYear", 
11         Target="HumanResources", Event="FOR INSERT")]
12     public static void ValidateYear()
13     {
14         // 用您的代码替换
15         SqlConnection conn = new SqlConnection("Context connection=true");
16 
17         //定义查询
18         string sql =
19             "SELECT COUNT(*) " +
20             "FROM INSERTED " +
21             "WHERE YEAR(ModifiedDate)<>2012";
22 
23         SqlCommand comm = new SqlCommand(sql, conn);
24 
25         //打开连接
26         conn.Open();
27         //获得行数
28         int numBadRows = (int)comm.ExecuteScalar();
29 
30         if (numBadRows > 0)
31         {
32             //Get the SqlPipe
33             SqlPipe pipe = SqlContext.Pipe;
34             //role back and raise an error
35             comm.CommandText = "RAISEERROR('修改错误',11,1)";
36 
37             //send the error
38             try
39             {
40             }
41             catch
42             {
43             }
44             System.Transactions.Transaction.Current.Rollback();
45         }
46         conn.Close();
47     }
48 }

用于验证插入的数据是否合法,当插入表HumanResources是,如果修改日期的年份不是2012将报错。

另外要注意的是要使用System.Transactions.Transaction.Current.Rollback(),必须添加System.Transactions的引用

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章