机房收费系统退卡之触发器

来源:互联网 发布:如何组织js代码 编辑:程序博客网 时间:2024/05/16 19:48

前言:在弄机房之前,师父告诉我说,你会用到触发器,但是当时完全没概念,什么叫触发器?怎么用啊?虽然软考考过,自考考过,但是那是强行记住的概念,要是说存储过程是为了完成特定的行为而定义的SQL语句,谁都会说,但是实际上呢,我一片空白,而今天我用到了,所以感觉很激动,终于要亲自动手了!

过程:我是在退卡这个窗体上用到的存储器。

作用:1,当一个动作发生的时候,触发执行另一个动作,如下图,当一开始的小球触发一个机关的时候,第二个机关转转紧接着就动了。这就是触发器。在退卡窗体这里,我要做的有两件事:

             第一:把所退的卡从卡表中消去记录

             第二:把所退的卡的信息记录到退卡表中

          上述两个动作几乎是同时发生的,也就是说我把表delete(删除)的时候,另一个动作紧接着发生。如果我把这个行为分成两个,写在D层里也是可以的,只不过有些繁琐,他不能自动的执行,如果我们想省事一点,那么就可以用到触发器。

                                  

建触发器:

                    


               

USE[Jifang]Go/******boject:Trigger [].[] Script Date :     ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO/******CREATE TRIGGER [dbo].[myTrigger]******/ALTER TRIGGER [myTrigger]  --创建触发器,触发器的名字为    ON [dbo].[CancelCard]AFTER deleteASBEGIN   --声明变量   declare @CardNumber int,           @StuNumber varchar(MAX),   @StuName varchar(MAX),   @Balance money,   @CancelTime varchar(MAX),   @CancelDate varchar(MAX)select @CardNumber=CardNumber FROM deleted select @StuNumber =StuNumber FROM deleted select @StuName =StuName FROM deleted select @Balance =Balance FROM deleted set @CancelDate = CONVERT (date  ,GETDATE(),111) --获取当前日期set @CancelTime = CONVERT (time ,GETDATE (),108)--获取当前时间if @@ROWCOUNT >0 --受影响的行数BEGIN Insert into dbo.CancelCard (CardNUmber ,StuNumber ,StuName ,Balance ,CancelTtime ,CancelDate )  values (@CardNumber ,@StuNumber ,@StuName ,@Balance ,@CancelTime ,@CancelDate )   ENDEND
     


  


  

       

原创粉丝点击