退卡操作之触发器的使用

     在学习数据库时就接触到了触发器,当初只是作为自考学习中的一个知识点看待,简单理解了一下理论基础,并没有真正的在实际中应用,现在系统中常见在使用,自己也在尝试。遇到新鲜的没有接触过的事物,我们应该拥有一颗好奇心,去探索求知,而不是有所抵触,不敢使用。之前我属于后者,总是害怕自己无法成功使用,现在心态已有所转变,大胆去用。
      触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。在机房收费系统中,我将其运用在了退卡功能中,由于我的退卡操作涉及到三张表,Update T_Card 使其“Status”字段更新为“不使用”状态, Delete T_Student 只要退卡就将该卡号的学生信息删除,Insert T_CancelCard 向其中填入退卡记录。退卡是由Insert主事件来触发并激活另外两个操作,这一系列操作只需在sql server中使用sql语句来完成即可,如下:



在七层联系中,只需要写跟插入相关的一些操作即可,与数据库中触发器的连接没有过多要求。
D层:
Public Class SqlCancelCardDAL : Implements IDAL.ICancelCard
    Private sqlHelper As New DAL.SqlHelper
    '注销卡号及写入退卡记录表中(在数据库设置触发器,实现了多表操作T_Student,T_Card,要么成功,要么失败!)  
    Public Function CancelStuCard(CancelCard As Entity.T_CancelCardEntity) As Boolean Implements ICancelCard.CancelStuCard

        Dim sql As String
        Dim flag As Boolean
        Dim sqlParmas As SqlParameter() = {New SqlParameter("@StudentNo", CancelCard.StudentNo),
                                           New SqlParameter("@cardNo", CancelCard.CardNo),
                                           New SqlParameter("@Cash", CancelCard.CancelCash),
                                           New SqlParameter("@Canceldate", CancelCard.NowDate),
                                           New SqlParameter("@Canceltime", CancelCard.Time),
                                           New SqlParameter("@UserID", CancelCard.UserID),
                                           New SqlParameter("@Ischeck", CancelCard.IsCheck)}
        sql = "insert into T_CancelCard(StudentNo,cardNo,Cash,Canceldate,Canceltime,UserID,Ischeck) values (@StudentNo,@cardNo,@Cash,@Canceldate,@Canceltime,@UserID,@Ischeck)"
        flag = sqlHelper.ExecAddDelUpdate(sql, CommandType.Text, sqlParmas)
        Return flag
    End Function

       其实这样下来触发器并没有想象中的难,只要去用,去学习就够了。
  比较一下触发器,优点大大加强了数据库的完整新约束及各种业务规划,缺点就是正因为如此多的约束条件和联系,使得对数据库维护存在困难。而触发器与存储过程的唯一区别便是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。之后就对存储过程展开学习和讨论。


评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值