主頁 > 知識庫 > 簡單觸發(fā)器的使用 獻(xiàn)給SQL初學(xué)者

簡單觸發(fā)器的使用 獻(xiàn)給SQL初學(xué)者

熱門標(biāo)簽:al智能電話機(jī)器人 銀川高頻外呼回?fù)芟到y(tǒng)多少錢 沒聽見電話機(jī)器人幫你接 陜西電銷外呼系統(tǒng)好用嗎 如何做地圖標(biāo)注圖鋪 數(shù)字匠心電銷機(jī)器人 蘭州語音外呼系統(tǒng)運(yùn)營商 最新人工智能電銷機(jī)器人 成都電話外呼系統(tǒng)一般多少錢
首先,啰嗦幾句廢話如下:
 ?。?)觸發(fā)器(trigger)是個特殊的存儲過程,它的執(zhí)行并不需要我們?nèi)ワ@式調(diào)用,而是由一些事件觸發(fā),這有點(diǎn)類似C#中的事件處理機(jī)制。當(dāng)使用UPDATE,INSERT  或DELETE的一種或多種對指定的數(shù)據(jù)庫的相關(guān)表進(jìn)行操作時,會觸發(fā)觸發(fā)器。
 ?。?)觸發(fā)器可以包含復(fù)雜的SQL語句,主要用于強(qiáng)制復(fù)雜的業(yè)務(wù)規(guī)則或要求。
 ?。?)觸發(fā)器能夠維持?jǐn)?shù)據(jù)庫的完整性,當(dāng)執(zhí)行插入、更新或刪除操作時,觸發(fā)器會根據(jù)表與表之間的關(guān)系,強(qiáng)制保持其數(shù)據(jù)的完整性。
  
  好,啰嗦完了開始貼代碼,首先貼上我創(chuàng)建的兩張表所包含的列,他們的關(guān)聯(lián)關(guān)系是1對多,以UserID進(jìn)行關(guān)聯(lián)。


然后來一個非常簡單的觸發(fā)器
復(fù)制代碼 代碼如下:

IF EXISTS(SELECT * FROM sysobjects
WHERE name='tr_Users_OnUpdate' AND TYPE='TR')
DROP TRIGGER tr_Users_OnUpdate
GO --這里呢創(chuàng)建觸發(fā)器與存儲過程類似(都是DDL)
--先判斷如否存在同名觸發(fā)器就刪除然后重建
CREATE TRIGGER tr_Users_OnUpdate
ON Users FOR UPDATE
AS PRINT ‘Users表已發(fā)生修改'
GO

上述代碼中,tr_Users_OnUpdate為觸發(fā)器名稱,Users為表名。這觸發(fā)器的作用是當(dāng)向Users表執(zhí)行Update時將打印“Users表已發(fā)生修改”。
  好了我們可以看到這個觸發(fā)器的實(shí)用性不是很大,那么接下來呢我們再來學(xué)習(xí)下關(guān)于觸發(fā)器里兩種特殊的表“inserted”和“deleted”。這兩張表主要用于觸發(fā)器。Deleted 表用于存儲 執(zhí)行DELETE 和 UPDATE操作時所影響的行的副本。而Inserted 表則用于存儲 INSERT 和 UPDATE 語句所影響的行的副本。那么我們看到執(zhí)行UPDATE操作時都會有記錄分別存儲到“inserted”和“deleted”。其實(shí)理解起來不難deleted表存儲的是Update之前的記錄,而inserted存儲的呢則是Update之后的記錄,這里關(guān)于理論性東西我不再贅述,官方資料有更詳細(xì)說明。
  現(xiàn)在我們要做的就是本文的重點(diǎn),當(dāng)往WordInfo添加一條記錄時,使用觸發(fā)器使UserInfo的相應(yīng)記錄的LeaveCount字段增加1。代碼如下:
復(fù)制代碼 代碼如下:

--添加留言的觸發(fā)器
IF EXISTS(SELECT name FROM sysobjects WHERE name='tr_LeaveWord_Add' AND TYPE='TR')
DROP TRIGGER tr_LeaveWord_Add
GO
CREATE TRIGGER tr_LeaveWord_Add
ON WordInfo FOR INSERT
AS UPDATE UserInfo SET LeaveCount=LeaveCount+1
WHERE UserID=(SELECT TOP 1 UserID FROM Inserted)
GO

OK,到這里就可以收工了,值得注意的是如果觸發(fā)器是UPDATE觸發(fā)的,那么在執(zhí)行Update后再查詢更新之前的數(shù)據(jù)改成查詢deleted表即可。
您可能感興趣的文章:
  • SQL觸發(fā)器實(shí)例講解
  • sqlserver 觸發(fā)器教程
  • 在登錄觸發(fā)器錯誤情況下連接SQL Server的方法
  • SQL Server觸發(fā)器及觸發(fā)器中的事務(wù)學(xué)習(xí)
  • SQL Server 2000中的觸發(fā)器使用
  • SQL Server 觸發(fā)器 表的特定字段更新時,觸發(fā)Update觸發(fā)器
  • 數(shù)據(jù)庫觸發(fā)器(Trigger)的一點(diǎn)使用心得
  • SQLServer 觸發(fā)器 數(shù)據(jù)庫進(jìn)行數(shù)據(jù)備份

標(biāo)簽:通化 宜春 邢臺 朔州 遼源 巴彥淖爾 本溪 鹽城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《簡單觸發(fā)器的使用 獻(xiàn)給SQL初學(xué)者》,本文關(guān)鍵詞  簡單,觸發(fā)器,的,使用,獻(xiàn)給,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《簡單觸發(fā)器的使用 獻(xiàn)給SQL初學(xué)者》相關(guān)的同類信息!
  • 本頁收集關(guān)于簡單觸發(fā)器的使用 獻(xiàn)給SQL初學(xué)者的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章