国产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级毛片免费毛视频 情侣国产在线 | 亚洲成a人一区二区三区 | 性欧美大战久久久久久久野外 | 久久精品免费一区二区视 | 999久久久免费精品国产牛牛 | 欧美一区二区免费 | 国产成人精品一区二区三区 | 最近中文字幕电影在线看 | 亚洲一区二区三区精品影院 | 在线观看视频日韩 | 日韩精品第二页 | 日韩欧美网 | 亚洲高清在线观看视频 | 欧美日韩欧美 | 久久精品美女 | 久久精品国产国产精品四凭 | 亚洲综合日韩 | 久久99精品国产99久久 | 日本久久精品免视看国产成人 | 亚洲 欧美 日韩 综合 | 日韩午夜在线观看 | 亚洲视频在线视频 | 一本久久精品一区二区 | 欧美a在线视频 | 久久国产精品一区二区 | 欧美日韩国产亚洲人成 | 亚洲色图日韩精品 | 久久亚洲一级α片 | 91国内精品久久久久影院优播 | 中文国产成人精品久久一区 | 国产免费高清视频在线观看不卡 | 亚洲一区二区三区免费 | 啪网站| 亚洲图区欧美 | 国产成人精品日本亚洲语音2 | 夜夜操夜夜骑 | 极品美女一区二区三区 | 亚洲国产成人久久综合一区 |