C#添加SQL SERVER 2008的触发器

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 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的引用

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
8天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
51 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
62 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
95 0
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之视图
【数据库SQL server】关系数据库标准语言SQL之视图
76 0
|
18天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
8天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
66 6
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
25天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数