【機房重構】結賬—觸發器應用

                         前提

	在機房重構結賬功能中,共涉及到四張表的使用,分別是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. 靈活應變。系統功能的實現,有時候不只一種方法,選擇最優的解決辦法目的是提高系統性能,爲用戶服務。結賬功能,小夥伴們有的使用了存儲過程,有的使用了視圖,不斷學習,不斷總結,掌握最優的選擇權。

 

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