浅谈触发器使用
来源:程序员人生 发布时间:2014-11-10 08:15:24 阅读次数:2703次
个人重构时看有人登录时使用触发器,当时我是用存储进程+事务实现的,也没有进1步思考,表面理解触发器就是由1个事件触发另外一个事件,存储进程也是封装了1组sql语句,再加上事务的1致性原则,也能够到达1个动作的完全性。现在牛腩中又触及到这个东西,存在即公道,也弥补1下学习中的空白,主要总结1下如何使用及和存储进程的不同。
1、建立:
1、 触发器是特殊的存储进程,只不过它的履行不是由程序调用,也不是手工启动,而是由事件来触发即Insert、Update、Delete这些动作,比如牛腩中删除新闻种别时,要删除种别下面的新闻及评论,这里在新闻种别下面建立删除新闻种别触发器,当履行时,还会包括1个或两个测试表,称之为inserted表和deleted表
(这里是deleted
),用于保存目标更新、插入或删除的数据信息,虽然不能直接修改测试表中的数据,但能通过SELECT语句,来检测INSERT,UPDATE或DELETE的结果。触发器的创建:
<span style="font-size:18px;">--====================================
-- Author:李立平
--Date:2014⑴0⑺
--Description:删除种别时,删除响应新闻和评论
--====================================
ALTER TRIGGER [dbo].[trigCategoryDelete]
on [dbo].[T_Category]
instead of Delete
AS
BEGIN
declare @caID INT
SELECT @caID =id from deleted
--删除评论
delete T_Comment where newsid in(select newsid from T_News where caID=@caID)
--删除新闻
delete T_News WHERE caID=@caID
--删除种别
DELETE T_Category where id=@caID
END</span>
2、和存储进程相比:
首先建立时,我选择http://www.wfuyu.com/db/―可编译性―http://www.wfuyu.com/db/触发器,发现履行后并没有建好的触发器,后来才知道原来在每张表的下面,但第2张图上面建好的存储进程履行后就在http://www.wfuyu.com/db/的可编译性下面。
2、使用(在D层代码中体现):
存储进程在使用时,用户通过指定存储进程的名字并给出参数(如果该存储进程带有参数)来履行它
,而触发器就是普通的sql语句,在履行这个事件时调用触发器这个操作。
1、存储进程(删除新闻功能):
<span style="font-size:18px;">/// <summary>
/// 删除新闻
/// </summary>
/// <param name="id">新闻id</param>
/// <returns>布尔</returns>
public bool Delete(string id)
{
bool flag = false;
string cmdText = "NewsDelete";
SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@id", id) };
int res = sqlhelper.ExecuteNonQuery(cmdText, paras, CommandType.StoredProcedure);
if (res>0)
{
return true;
}
return flag;
}</span>
2、触发器(删除种别功能):
/// <summary>
/// 删除新闻种别,连同删除新闻及新闻评论,用到触发器
/// </summary>
/// <param name="id">新闻id</param>
/// <returns>布尔</returns>
public bool Delete(string id)
{
bool flag = false;
string cmdText = "delete T_Category where id=@id";
SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@id",id ) };
int res = sqlhelper.ExecuteNonQuery(cmdText, paras, CommandType.Text);
if (res>0)
{
return true;
}
return flag;
}
总结:我们要去尝试新事物,公道使用它们给我们带来的便利。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠