sqlserver调试触发器
① sql SERVER如何应用DLL触发器
1、首先打开SQL SERVER 2008数据库管理工具,然后选择服务器,选择Windows身份验证进行连接,如下图所示
2、进入管理工具以后,定位要操作的数据库,然后点击新建查询,如下图所示
3、在新建查询界面中,通过create trigger语句创建DLL触发器,当进行数据库删除和修改的时候进行触发,如下图所示
4、语句编写好了以后,点击工具栏中的执行命令,如果消息中显示命令已成功完成则创建成功,如下图所示
5、然后我们打开数据库触发器文件夹,你就会看到你所创建的触发器名称,如下图所示
6、接下来我们演示触发器的作用,在查询界面中我们通过drop语句删除一个数据库,执行后出现如下的提示,这就是我们触发器的提示,如下图所示
7、然后我们在来看看数据库列表中所删除的数据库是否还存在,如下图所示,数据库没有删除,说明触发器已经把操作回滚了
工具/材料
SQL
SERVER
2008
② sql2008 怎么调试触发器
在项目中,单击右键选择"添加"->"触发器",代码如下(validateyear.cs):
using
system;
using
system.data;
using
system.data.sqlclient;
using
microsoft.sqlserver.server;
public
partial
class
triggers
{
//
为目标输入现有表或视图并取消对特性行的注释
[microsoft.sqlserver.server.sqltrigger
(name="validateyear",
target="humanresources",
event="for
insert")]
public
static
void
validateyear()
{
//
用您的代码替换
sqlconnection
conn
=
new
sqlconnection("context
connection=true");
//定义查询
string
sql
=
"select
count(*)
"
+
"from
inserted
"
+
"where
year(modifieddate)<>2012";
sqlcommand
comm
=
new
sqlcommand(sql,
conn);
//打开连接
conn.open();
//获得行数
int
numbadrows
=
(int)comm.executescalar();
if
(numbadrows
>
0)
{
//get
the
sqlpipe
sqlpipe
pipe
=
sqlcontext.pipe;
//role
back
and
raise
an
error
comm.commandtext
=
"raiseerror('修改错误',11,1)";
//send
the
error
try
{
}
catch
{
}
system.transactions.transaction.current.rollback();
}
conn.close();
}
}
用于验证插入的数据是否合法,当插入表humanresources是,如果修改日期的年份不是2012将报错。
另外要注意的是要使用system.transactions.transaction.current.rollback(),必须添加system.transactions的引用