【机房重构】结账—触发器应用

                         前提

	在机房重构结账功能中,共涉及到四张表的使用,分别是User表,Card表,Recharge表,Cancel表,Bill 账单表。等我基本上把功能实现的时候,原来还有更优的代码,将几张表的查询放在存储过程中使用很便利,回头看自己的弱爆了。不过,我还是完美实现了触发器,那我们开始进入正题——触发器。
                             学习
  1. 定义理解:在执行某一特定操作后,触发某些事件。比如:结账功能,在Bill账单表中添加记录,在Card表,Recharge表,Cancel表中更新Ischeck字段。
  2. 优点:保证数据完整性;

由系统自动执行对数据库修改的语句

 

                      使用方法

方法1:

方法2:

	本编用的是方法二,等我写好代码执行之后就发现文件夹下面没有触发器,百度的时候完美的找到了解决问题的方法,原来使用方法二创建的触发器,所存在的位置是操作表的文件下,位置如方法一图示。

 

 

                      代码展示

 

USE [JFCharge]
GO
/****** Object:  Trigger [dbo].[UserIDCheck]    Script Date: 2016/6/6 11:48:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[UserIDCheck]	--创建触发器
	ON [dbo].[Bill_Info ]
	AFTER insert
AS
	declare @remainCash	numeric(18, 0),	--声明变量
			@rechargeCash numeric(18, 0),
			@consumeCash numeric(18, 0),
			@cancelCash	numeric(18, 0),
			@allCash numeric(18, 0),
			@checkDate date,
			@checkTime time(0),
			@UserID	char(16),
			@Ischeck char(10)
		--给变量赋值
	select	@remainCash = remainCash from inserted 
	select	@rechargeCash = rechargeCash from inserted
	select	@consumeCash = consumeCash from inserted 
	select	@cancelCash = cancelCash from inserted 
	select	@allCash = allCash from inserted 
	select	@checkDate = checkDate from inserted 
	select	@checkTime = checkTime from inserted 
	select	@UserID = UserID from inserted 
			 
			
BEGIN
	--引发操作:更新表
	update Recharge_Info set Ischeck='结账' where UserID=@UserID and Ischeck=@Ischeck 
	update Cancel_Info set Ischeck='结账' where UserID=@UserID and Ischeck=@Ischeck 
	update Card_Info set Ischeck='结账' where UserID=@UserID and Ischeck=@Ischeck 

END

 

 

 

PS:
ALTER TRIGGER [dbo].[UserIDCheck]	--创建触发器

 

这一行代码中,在首次创建的时候应该改为:

 

CREATE TRIGGER [dbo].[UserIDCheck]	--创建触发器

 

这是由于,已经创建好的触发器,在再次查看代码或是修改的时候,该触发器只能是更新操作,而不会再次创建。

 

 

                      反思总结

 

 


 
  1. 思考比努力更重要。在遇到问题的时候,不要一味的借鉴,要自己思考,明明代码完全相同,为什么自己的功能不能运行,就如就是一个alter和create的区别却足足让我花费了两个小时的时间。
  2. 多总结知识。将自己的不足记录下来,不断充电,积累知识,触发器的知识这次我们总结了,下次看的时候就不会陌生。
  3. 灵活应变。系统功能的实现,有时候不只一种方法,选择最优的解决办法目的是提高系统性能,为用户服务。结账功能,小伙伴们有的使用了存储过程,有的使用了视图,不断学习,不断总结,掌握最优的选择权。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章