博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈触发器使用
阅读量:5879 次
发布时间:2019-06-19

本文共 2139 字,大约阅读时间需要 7 分钟。

    个人重构时看有人登录时使用触发器,当时我是用存储过程+事务实现的,也没有进一步思考,表面理解触发器就是由一个事件触发还有一个事件,存储过程也是封装了一组sql语句,再加上事务的一致性原则,也能够达到一个动作的完整性。如今牛腩中又涉及到这个东西,存在即合理,也填补一下学习中的空白。主要总结一下怎样使用及和存储过程的不同。

一、建立:

      1、   触发器是特殊的存储过程。仅仅只是它的运行不是由程序调用。也不是手工启动,而是由事件来触发Insert、Update、Delete这些动作,比方牛腩中删除新闻类别时,要删除类别以下的新闻及评论,这里在新闻类别以下建立删除新闻类别触发器,当运行时,还会包含一个或两个測试表,称之为inserted表和deleted(这里是deleted )。用于保存目标更新、插入或删除的数据信息。尽管不能直接改动測试表中的数据,但能通过SELECT语句,来检測INSERT。UPDATE或DELETE的结果。触发器的创建:

--====================================--  Author:李立平--Date:2014-10-7--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=@caIDEND

2、和存储过程相比:

         首先建立时。我选择数据库—可编译性—数据库触发器,发现运行后并没有建好的触发器。后来才知道原来在每张表的以下。但第二张图上面建好的存储过程运行后就在数据库的可编译性以下。

二、使用(D层代码中体现):

    存储过程在使用时,用户通过指定存储过程的名字并给出參数(假设该存储过程带有參数)来运行它 ,而触发器就是普通的sql语句。在运行这个事件时调用触发器这个操作。

1、存储过程(删除新闻功能):

///         /// 删除新闻        ///         /// 新闻id        /// 
布尔
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; }

2、触发器(删除类别功能):

///         /// 删除新闻类别。连同删除新闻及新闻评论,用到触发器        ///         /// 新闻id        /// 
布尔
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; }
       
总结:我们要去尝试新事物,合理使用它们给我们带来的便利。

你可能感兴趣的文章
用python操作mysql数据库(之“更新”操作)
查看>>
windows server 2012 r2 iis8.5 部署asp.net mvc4/5程序小结
查看>>
服务器公共组件实现 -- 环形缓冲区
查看>>
大咖云集,技术宅开趴倒计时 —— 2017 Kubernetes Meetup | 成都站
查看>>
Freemarker商品详情页静态化服务调用处理
查看>>
阿里云发布新物种神龙云服务器 媲美物理机性能的弹性云服务器
查看>>
jvm系列(六):Java服务GC参数调优案例
查看>>
一点BPXA的思考
查看>>
IDC:传统vs.新兴,中国医疗信息化何去何从?
查看>>
IT168调查:云计算在中国还很“虚”
查看>>
英特尔Skylake处理器全面入驻Google Compute Engine
查看>>
NEC携手英特尔开发Cloud RAN解决方案 ,推进5G“最好时代”的到来
查看>>
D-Link家用路由器被曝大量严重漏洞
查看>>
NEC与日挥就利用AI、IoT技术改善工厂运营展开合作
查看>>
盘点:2016财年全球大型存储营收排名前九位的企业
查看>>
盛邦安全网站监控预警平台化繁为简 ——网站安全从管理向治理的迁移
查看>>
AMD至真至幻VR科技 精彩亮相6·18海交会
查看>>
2.5和5GbE交换机的出现:是好是坏?
查看>>
《Web安全之机器学习入门》一 1.6 本章小结
查看>>
Akamai发布2016Q2互联网发展状况安全报告 称中国是全球第二web攻击源
查看>>