"); //-->
机房收费系统,在退卡操作时,要删除学生信息表中的数据还要将退还金额信息写到退卡记录表中,两条SQL语句就能实现了,但是还没有更简单的方法呢,想到了再数据库视频中学到的触发器,一个操作引起其他操作。
重新学习了触发器这部分内容。
概括一下触发器,顾名思义就是在对数据库操作时引起的另外的操作,这里操作只包括(update delete inserte),用触发器解决的问题是向一个表中写入(删除)数据时,同时将写入的信息保存在另一个表中,也可以是在写入(删除)数据时,另外一个表中的数据跟着变化。这些都可以用触发器实现。
下面说说自己实现用触发器实现退卡操作的。
按照触发器的特点,只需要在删除的学生基本信息表下建立一个触发器,编写好写入到退卡记录中的语句,在学生表中,执行删除时,就会自动将要删除的记录写入退卡记录中,这样实现了的确是简单哈。
问题来啦。学生基本信息表结构和退卡记录表的结构不一样啊,写入的时候,一方面将要删除的信息的卡号,余额,操作者字段内容写入,还要获得系统当时的时间,日期字段写入。这下麻烦啦。
继续找资料吧,网上的好多信息说“触发器操作的表结构一致”,不一致的话,就不能用了么,就在我快要放弃触发器的时候,实现了不同表结构的操作。过程是复杂的,结果是简单的。代码仅供参考:
(cardNo,delData,delTime ,cardCash ,cardManager )是要插入表中的字段名称
values后面的是插入的内容
(select cardno from deleted) 是在删除表中得到的卡号字段,对应记录表中的卡号字段
convert(varchar(15),GETDATE(),103) 获取系统日期字段,填进去的其他字段,当然如果是固定的字符串,直接写出来,就行啦
触发器还可以起到限制作用,如删除数据库时提示,保护原始数据等。这些功能在以后做系统时再用,先了解着。
触发器很好用,但是不能滥用。在数据特别多的时候,不适合用触发器。
说明:for=after 是在执行后才触发的
instead of代替sql语句,执行的是触发器而不是之前的sql语句
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。