国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

機房收費系統之觸發器

來源:懂視網 責編:小采 時間:2020-11-09 14:54:24
文檔

機房收費系統之觸發器

機房收費系統之觸發器:印象里邊最早接觸觸發器是在耿建玲的視頻里邊見到的,但是完全不理解,但是在實現機房收費系統的時候,就發現原來SQL Server中還有這么一個強大的功能,簡直是和存儲過程合稱為最佳兄弟二人組。 首先我們看看觸發器是什么? 觸發器,因為我先認識的存儲過程+
推薦度:
導讀機房收費系統之觸發器:印象里邊最早接觸觸發器是在耿建玲的視頻里邊見到的,但是完全不理解,但是在實現機房收費系統的時候,就發現原來SQL Server中還有這么一個強大的功能,簡直是和存儲過程合稱為最佳兄弟二人組。 首先我們看看觸發器是什么? 觸發器,因為我先認識的存儲過程+

印象里邊最早接觸觸發器是在耿建玲的視頻里邊見到的,但是完全不理解,但是在實現機房收費系統的時候,就發現原來SQL Server中還有這么一個強大的功能,簡直是和存儲過程合稱為最佳兄弟二人組。 首先我們看看觸發器是什么? 觸發器,因為我先認識的存儲過程+

印象里邊最早接觸觸發器是在耿建玲的視頻里邊見到的,但是完全不理解,但是在實現機房收費系統的時候,就發現原來SQL Server中還有這么一個強大的功能,簡直是和存儲過程合稱為最佳兄弟二人組。

首先我們看看觸發器是什么?

觸發器,因為我先認識的存儲過程+事務,所以我在這里把他稱為存儲過程的小兄弟,至于為什么,因為他們真的很像,對于存儲過程,大家可以在http://blog.csdn.net/lovemenghaibin/article/details/38235817了解,這里就不詳細的介紹了,但是觸發器是什么呢?

觸發器是SQL Server提供給程序員和數據分析員來保證數據完整性的一種方式,它就是與表事件相關的特殊存儲過程。觸發器不能被直接執行,只能為表上的Insert\Update\Delete事件所觸發。它也不能傳遞或接受參數。

觸發器可以查詢其他表,而且可以包含復雜的SQL語句。它們主要用于強制服從復雜的業務規則或要求。例如:您可以根據客戶當前的帳戶狀態,控制是否允許插入新訂單。 比如說,我這里有兩張表,一張是充值表(Recharge_Info),一張是學生表(Student_Info),如果我們要進行充值行為,也就是要進行兩個動作,第一為學生表的錢加上充值的錢,第二就是為充值表里邊添加一條記錄,那么如果要完成這個操作,我們需要兩步,更新和插入信息,也就說我們會這樣 insert Recharge_Info into (cardID,addMoney...) values(@cardID,addMoney...) Update Student_Info set Cash=Cash+addMoney where cardID=@cardID
這個過程如果需要執行多次呢,大家每次都要用兩條語句來組合這一個過程,是不是麻煩了點,于是現在就有了觸發器這個過程,那么我來為大家來展示一下觸發器的相同實現。
CREATE TRIGGER [dbo].[TR_charge_U]	--創建觸發器
	
ON [dbo].[T_Recharge]	--在T_ReCharge表

for insert	為了插入數據而需要執行的操作

AS 
--定義一些參數
declare @cardID char(10)	--卡號
declare @cash decimal(10, 2)	--卡內余額
declare @addmoney decimal(10, 2)	--充值金額
if UPDATE(cash)

BEGIN
	select @cardID =CardID from inserted 	--選擇充值表中的卡號	
	select @addmoney=cash from inserted --選擇我們充值表中的充值金額
	select @cash =T_card.cash from T_Card 	--選擇卡內的余額
	update T_Card set Cash=@cash+@addmoney where cardID =@cardID 
END
這里我們大家解釋一下,這個流程是怎么回事,首先我們要執行的語句就是insert Recharge_Info into (cardID,addMoney...) values(@cardID,addMoney...),那么觸發器當你在插入數據的時候,就會將信息保存到Inserted中,然后我們再根據需要把里邊的數據取出來,用來更新我們需要更新的表。 在觸發器中,我們有兩張表,一張是deleted表,一張Inserted表,這兩張是虛擬表,用用完之后數據庫會自動刪除。 下面我用表格的形式將他們的用處展現出來

對表的操作

Inserted邏輯表

Deleted邏輯表

增加記錄(insert)

存放增加的記錄

刪除記錄(delete)

存放被刪除的記錄

修改記錄(update)

存放更新后的記錄

存放更新前的記錄

所以我們在執行操作的時候,人們會說觸發器是同時操作的,其實不是的,觸發器把我們前邊說的insert Recharge_Info into (cardID,addMoney...) values(@cardID,addMoney...,Update Student_Info set Cash=Cash+addMoney where cardID=@cardID 自己把邏輯問題給結局了,從而省的我們再寫兩只三條語句去組合,用一次還好,那么用多次呢? 但是觸發器也不是越多越好,因為他是體現在數據庫中的一段代碼,不會呈現在程序中,所以這在開發的階段加幾個也許不是問題,可是如果要是以后咱們的系統出現問題了,那么要修改這方面就顯得有點難了,觸發器越是多越是會造成邏輯上的困難,所以建議大家用可以,適當的用。 最后為大家獻上創建各種觸發器的一些小Demo Insert觸發器
create trigger tgr_classes_insert
	on classes
 	for insert --插入觸發
	as
 --定義變量
 declare @id int, @name varchar(20), @temp int;
 --在inserted表中查詢已經插入記錄信息
 select @id = id, @name = name from inserted;
 set @name = @name + convert(varchar, @id);
 set @temp = @id / 2; 
 insert into student values(@name, 18 + @id, @temp, @id);
delete觸發器
create trigger tgr_classes_delete
on classes
 for delete --刪除觸發
as
 print '備份數據中……'; 
 if (object_id('classesBackup', 'U') is not null)
 --存在classesBackup,直接插入數據
 insert into classesBackup select name, createDate from deleted;
 else
 --不存在classesBackup創建再插入
 select * into classesBackup from deleted;
 print '備份數據成功!';
update觸發器
create trigger tgr_classes_update
 on classes
 for update
 as
 declare @oldName varchar(20), @newName varchar(20);
 --更新前的數據
 select @oldName = name from deleted;
 if (exists (select * from student where name like '%'+ @oldName + '%'))
 begin
 --更新后的數據
 select @newName = name from inserted;
 update student set name = replace(name, @oldName, @newName) where name like '%'+ @oldName + '%';
 print '級聯修改數據成功!';
 end
 else
 print '無需修改student表!';
一個觸發器,一個存儲過程,一個全自動,一個任意調用,都能讓程序運行的更快,占用的資源更少。盡管看上去也很像,功能貌似給我們減少了很多的壓力,但是在寫的時候,或者說是在設計數據庫的時候,我們還是要謹慎的用,否者我們會給軟件以后的運行帶來難以想象的痛苦。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

機房收費系統之觸發器

機房收費系統之觸發器:印象里邊最早接觸觸發器是在耿建玲的視頻里邊見到的,但是完全不理解,但是在實現機房收費系統的時候,就發現原來SQL Server中還有這么一個強大的功能,簡直是和存儲過程合稱為最佳兄弟二人組。 首先我們看看觸發器是什么? 觸發器,因為我先認識的存儲過程+
推薦度:
標簽: 里邊 接觸 最早
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 草逼电影| 一级a毛片免费观看久久精品 | 精品一区 二区三区免费毛片 | 中国特黄毛片 | 欧美日韩在线一区 | 欧美精品亚洲网站 | 亚洲国产视频网站 | 国产欧美日韩综合二区三区 | 日韩综合网| 国产免费高清视频在线观看不卡 | 国产一区二区不卡视频 | 欧美日韩性视频在线 | 国产成人三级经典中文 | 黄毛片免费 | 免费的一级毛片 | 欧美十区| 日韩在线免费视频观看 | 亚洲最新在线观看 | 国产九区 | 欧美日韩欧美 | 亚洲国产成人久久午夜 | 国产精品电影一区二区三区 | 国产在线精品观看一区 | 激情欧美一区二区三区 | 美日韩精品| 亚洲欧美日韩高清中文在线 | 欧美不卡激情三级在线观看 | 久久99精品一区二区三区 | 日韩国产一区二区 | 亚洲小视频在线 | 国产精品久久久久影院色 | 亚欧精品一区二区三区 | 久久不射电影网 | 国产高清美女一级a毛片久久 | 欧美一区二区三区不卡免费 | 国产综合精品久久久久成人影 | 亚洲精品国产自在久久出水 | 国产成人精品三区 | 99久久免费国产精精品 | 国产 日韩 欧美 在线 | 国产精品路线1路线2路线 |