• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      對SQL SERVER 中觸發(fā)器的深入研究

      2023-07-21 11:02:49邢偉杰
      計算機應用文摘 2023年14期
      關鍵詞:觸發(fā)器應用

      摘 要SQL SERVER 觸發(fā)器是一個特定的數據信息存儲程序 它由用戶確定 并在消息表或數據庫系統(tǒng)內容上進行處理 觸發(fā)器無法被用戶進行處理 也無法接收各種功能 它們通常由事件驅動 由DBMS函數實現(xiàn) 當用戶在消息表中進行DELETE,INSERT,UPDATE 操作時 觸發(fā)器會被激活 并能夠進行相關的處理 為確保操作能夠順利完成 觸發(fā)器必須遵守規(guī)定的限制原則 一旦觸發(fā)器被運行 所有動作都將被視為一次事務處理 若事務未能成功完成 則DBMS 將回到事務開始前的狀態(tài)觸發(fā)器可以用來檢查數據規(guī)范 條件和默認值的完整性 檢測更復雜的信息 以及運行更復雜的業(yè)務邏輯 在此基礎上 文章深入探討SQL SERVER 觸發(fā)器的種類 特性及其形成的2 種臨時表 并著力闡述觸發(fā)器在提升數據分析完整性方面的應用 及其相關的事宜 旨在為數據庫系統(tǒng)設計者提供有效的參考 幫助其更好地控制數據完整性

      關鍵詞SQL SERVER 觸發(fā)器 應用

      中圖法分類號tp311 ?文獻標識碼a

      1 引言

      數據庫系統(tǒng)是信息系統(tǒng)開發(fā)和運行的基礎,而其存儲數據的準確性則是至關重要的。為確保數據的準確性,各種DBMS 提供了多種檢測和檢查方法,而靈活和合理地使用觸發(fā)器可以有效地提升信息系統(tǒng)的數據準確性,一般而言,數據庫系統(tǒng)開發(fā)人員會采用一些數據約束來確保數據的完整性。但是,當面對復雜的檢查策略和操作時,SQL SERVER 提供了一種更加有效的方法———觸發(fā)器。

      2 SQL SERVER 觸發(fā)器含義及分類

      2.1 SQL SERVER 觸發(fā)器含義

      觸發(fā)器是由事件驅使的數據存儲過程,它可以被使用者定義在數據表上,并且可以被DBMS 自動調用運行。當使用者在數據表中進行任何操作,如更改、撤銷、進入或建立資料數據庫對象等,觸發(fā)器將會自動響應,從而實現(xiàn)統(tǒng)計信息的有效管理和分析。

      2.2 SQL SERVER 觸發(fā)器分類

      SQL SERVER 觸發(fā)器能夠根據引發(fā)事件的差異而分為Data Definition Language 和Data ManipulationLanguage 2 種,前者以數據編程語言為基礎,后者以數據過程語句為基礎。

      DDL 觸發(fā)器可以用來處理各種DDL 事情,包括用戶進入和后退、CREATE、DROP、ALTER 語句等。它不僅可以用來檢查標準數據庫系統(tǒng)中的表結構和視圖結構,還可以作為應用系統(tǒng)管理主要任務,以確保信息系統(tǒng)的安全性和可靠性。

      DML 觸發(fā)器是一種可以回應用戶DML 執(zhí)行行為的機制,它可以檢查表或視圖中的INSERT,DELETE和UPDATE 動作是否符合業(yè)務規(guī)則,從而確保數據的完整性,并且可以在DML 編輯數據時引發(fā)執(zhí)行,以提高數據處理的效率和準確性。

      DML 觸發(fā)器可以根據在前面還是后面執(zhí)行來劃分,這種劃分方式被稱為INSTEAD OF 和AFTER(FOR)觸發(fā)器。

      INSTEAD OF 觸發(fā)器是一種在數據運算之前執(zhí)行的程序, 它可以定義在視圖或表上, 用于替代DELETE,UPDATE 和INSERT 等功能,從而實現(xiàn)信息的有效處理。每個INSTEAD OF 觸發(fā)器只能被定義一次,以確保信息的有效處理,它可以在數據變動之前被調用,替代用戶的操作語句,從而實現(xiàn)觸發(fā)器所定義的操作,使用戶能夠更加輕松地完成任務。

      在DML 語句結束執(zhí)行后,AFTER(FOR)觸發(fā)器會被激活,以檢測被執(zhí)行的信息是否合乎業(yè)務規(guī)則,若不合乎規(guī)則,則會回到該數據操作前的狀態(tài)。在同一張數據表上,可以定義多個AFTER(FOR)觸發(fā)器,而不僅僅是在表格中,AFTER 觸發(fā)器可以在大量數據動作結束后被調動運行,根據變化后的信息,對相關業(yè)務規(guī)范做出審查,從而決定是否接受或拒絕這些變化。

      3 臨時表

      SQL SERVER 在運行DML 觸發(fā)器時,會產生2 種只讀型臨時表,即DELETED 表和INSERTED 表。它們僅出現(xiàn)在存儲器中,其結構與激活DML 觸發(fā)器的視圖或基表相似,但功能卻有所不同。

      3.1 DELETED 表

      DELETED 表是一個存儲器,它只保存用于進行UPDATE 或delete 運算的舊數據行。當這些數據行被更新或移除時, 它們將從原有的基表中遷移到DELETED 表。

      3.2 INSERTED 表

      INSERTED 表是一個存儲系統(tǒng),它可以存儲本次UPDATE 和INSERT 操作所產生的新數據行。當執(zhí)行UPDATE 或INSERT 操作時,這些新數據行會被插入到基表中,并被復制到INSERTED 表中。

      事實上,UPDATE 操作是由DELETE 和INSERT2個步驟組成的。在UPDATE 操作中,DBMS 會將需要更新的數據行從基表中移除, 并將其移動到DELETED 表中, 最后將新的數據行同樣移入INSERTED 表和基表中。

      4 SQL SERVER 觸發(fā)器應用

      觸發(fā)器機制應該被視為Windows 系統(tǒng)的一種消息響應機制,它能夠在數據表上實施更加復雜的檢查和操作,同時提供更加精確和強力的數據信息控制功能。此外,DDL 觸發(fā)器還能夠用于各類應用管理,從而有效地提升數據庫應用控制系統(tǒng)的可靠性。

      4.1 實現(xiàn)CHECK 約束檢查功能

      DML 觸發(fā)器可以靈活編寫代碼,以處理各種業(yè)務邏輯,因此它可以設置比CHECK 約束更加復雜、強大的數據檢查規(guī)則。當數據庫系統(tǒng)設計者需要發(fā)出差錯消息以提醒用戶時,CHECK 約束根本無法滿足需求,而觸發(fā)器可以有效地實現(xiàn)這一目標。并且當需要使用其他表格中的數據時,觸發(fā)器可以提供有效的支持,而CHECK 約束則可以提供更多的靈活性和便利性。

      4.2 數據庫設計與批量數據導入

      在信息系統(tǒng)工程設計中,表內部結構的改變和完善是不可避免的。因此,在表上設計各種限制以及表與表之間的引用關系等,都必須進行精確的計算,以確保數據庫系統(tǒng)的正常運行。然而,由于表內部結構的變化,原有的完整性限制都必須被取消,而重新建立各種限制又會造成一定的不便,這就給設計者提出了極大的挑戰(zhàn)。通過觸發(fā)器來設置有關限制規(guī)定,能夠在表內部結構發(fā)生變化時,快速禁用觸發(fā)器,從V,)"而節(jié)省時間和精力,同時能夠便捷地修復觸發(fā)器的應用,大幅提高了信息系統(tǒng)產品設計和測試的效率。

      5 合理選擇觸發(fā)器與完整性約束

      數據完整性約束和觸發(fā)器的作用機制各有不同,它們在完成不同任務時各有優(yōu)勢和不足。

      5.1 首選完整性約束

      一般而言,只要能夠滿足應用系統(tǒng)業(yè)務邏輯的完整性要求,就應該采取完整性約束措施。完整性是一個關系數據庫系統(tǒng)的基本要求,它能夠通過建立主鍵、外鍵、值域和用戶定義的約束來實現(xiàn)。應用的完整性是至關重要的,因此應盡可能采用FOREIGNKEY 約束來強制執(zhí)行。若完整性能夠符合應用的需求,則應該通過CHECK 約束來確保執(zhí)行的有效性[1~2] 。

      5.2 使用觸發(fā)器以滿足復雜的特殊需求

      觸發(fā)器是一種有效的解決方案,它可以使用SQL語句來處理復雜的邏輯,從而滿足完整性約束的要求。然而,它并不總是最優(yōu)的選擇,在完整性約束根本無法滿足用戶需求時,觸發(fā)器就顯得尤為重要。

      5.2.1 CHECK 約束無法滿足特殊檢查

      CHECK 條件雖然快速且效率高,但它無法滿足所有檢查要求。觸發(fā)器能夠根據需要定制更復雜、更強大的檢查規(guī)則,而CHECK 條件只能用于同一個表中的數字,因此它只能通過邏輯表示或者同一個列的另一值來檢驗列值。一旦需要檢驗列值,觸發(fā)器就能夠提供有效地支持,從而使用戶能夠從多個表中獲取有效的信息。比如,觸發(fā)器能夠從同一個數據庫系統(tǒng)的SELECT 結果中接入或修改相關的信息,以便更準確地識別出列值。

      5.2.2 對中間數據進行處理

      當我們不關心表中某個字段的過去或現(xiàn)在的值,只想知道變化的程度時,雖然沒有列表可以提供這些信息,但是可以通過觸發(fā)器中的INSERTED 臨時表和DELETED 臨時表來計算出變化的程度,從而獲得有關變化的信息。觸發(fā)器可以檢測數據在各個表中的變化,并根據這些變化采取相應的應對措施,以確保數據的準確性和完整性。

      5.2.3 方便完整性更改

      當表內部結構發(fā)生變化時,原有的完整性約束必須被刪除,這使得數據庫系統(tǒng)設計師面臨著巨大的挑戰(zhàn),因為在再次創(chuàng)建表之前,必須先確保毫無疏漏,這會給數據庫系統(tǒng)設計師造成極大的麻煩。觸發(fā)器不僅僅關注表內部結構的變化,還關注表內部結構是否能夠正常運行。因此,當表結構發(fā)生變化時,只需要禁用觸發(fā)器,就能夠為數據庫系統(tǒng)開發(fā)者帶來便利。在數據庫系統(tǒng)開發(fā)過程中,應該先采用觸發(fā)器來確保引用完整性, 然后在開發(fā)完成后, 將其更改為DRI[3~4] 。

      6 SQL SERVER 觸發(fā)器應用注意事項

      6.1 觸發(fā)器執(zhí)行不是主動執(zhí)行

      AFTER 觸發(fā)器是一種在事情產生后被啟動的引發(fā)語言,它會將引發(fā)語言運行的結果記載在日志中,但并沒有進行提交。這表明, 一旦觸發(fā)器要求rollback,就必須取消此前已進行的一系列操作,從而影響系統(tǒng)性能。因此,觸發(fā)器的效率取決于引發(fā)語言的工作量。約束是一種主動的行為,它們在實際語言產生之前就會發(fā)揮作用,以阻止失敗的產生。約束的執(zhí)行速度要比其他行為快得多,但是當引發(fā)語言變得更加復雜、影響數據量更大時,使用觸發(fā)器可以帶來更高的效率。

      6.2 保持觸發(fā)器簡潔

      觸發(fā)器是一種特殊的事務,可以在語句結束時觸發(fā)它。如果觸發(fā)器語句包含大量的代碼,那么觸發(fā)器會持續(xù)運行很長時間,這意味著每一段代碼都需要花費大量的時間來完成。觸發(fā)器的執(zhí)行需要一段時間,而SQL 語句則需要在觸發(fā)器完成后才能正式執(zhí)行。若觸發(fā)器在執(zhí)行過程中發(fā)現(xiàn)錯誤,則它會自動重新開始,這樣一來,降低了整個應用系統(tǒng)的運行效率,導致性能下降。

      6.3 盡量避免在觸發(fā)器中回滾

      盡管回滾是觸發(fā)器中最常見的任務, 但由于AFTER 觸發(fā)器在大部分操作完成后才會發(fā)生,因此回滾的成本較高,為了節(jié)省成本,推薦盡量采用DRI。在觸發(fā)器中應用多條ROLLBACK 語句時,最好在完成啟動觸發(fā)器以前就發(fā)現(xiàn)可能存在的問題,并立即進行檢查,以避免錯誤發(fā)生,而不是等到觸發(fā)器發(fā)出回滾信號。觸發(fā)器能夠有效地防止或回滾偏離業(yè)務邏輯規(guī)律的動作,但應盡量避免使用回滾,因為它會導致大量動作被撤銷,并增加系統(tǒng)運行的成本。尤其是當涉及大量信息時,或許會導致數據庫系統(tǒng)服務質量急劇下降,所以,建議盡可能使用完整性約束,而不過度依賴觸發(fā)器。

      7 結束語

      使用觸發(fā)器能夠協(xié)助數據庫信息管理系統(tǒng)設計者和維護者實現(xiàn)繁雜的各種功能,從而提升信息系統(tǒng)的完整性。但是,應該謹慎使用觸發(fā)器,因為過度使用會導致系統(tǒng)維護變得困難。所以,在數據庫信息管理系統(tǒng)產品設計中,應盡可能采用DRI 來確保數據信息完全。通過適當應用觸發(fā)器,能夠有效保護數據表中的各種數據信息,使其更加安全可靠,極大地減少數據庫信息管理系統(tǒng)設計者的操作量,從而達到事半功倍的效果。

      參考文獻:

      [1] 王珊.數據庫系統(tǒng)概論[M].北京:高等教育出版社,2012.

      [2] 鄒建.深入淺出SQL SERVER 2005 開發(fā)、管理與應用實例[M].北京:人民郵電出版社,2008.

      [3] 李霞. SQL SERVER 約束在維護數據完整性中的運用[J].晉城職業(yè)技術學院學報,2012(5):16?19.

      [4] 張峰.觸發(fā)器在數據處理過程中的應用研究[J].計算機工程與科學,2008(5):156?158.

      作者簡介:

      邢偉杰( 1981—), 碩士, 講師, 研究方向: 計算機科學技術。

      猜你喜歡
      觸發(fā)器應用
      主從JK觸發(fā)器邏輯功能分析
      電子世界(2017年22期)2017-12-02 03:03:45
      使用觸發(fā)器,強化安全性
      GM(1,1)白化微分優(yōu)化方程預測模型建模過程應用分析
      科技視界(2016年20期)2016-09-29 12:03:12
      煤礦井下坑道鉆機人機工程學應用分析
      科技視界(2016年20期)2016-09-29 11:47:01
      氣體分離提純應用變壓吸附技術的分析
      科技視界(2016年20期)2016-09-29 11:02:20
      會計與統(tǒng)計的比較研究
      對觸發(fā)器邏輯功能轉換的分析
      觸發(fā)器邏輯功能轉換的兩種方法
      云阳县| 聂荣县| 牟定县| 锡林浩特市| 孙吴县| 保山市| 库尔勒市| 耒阳市| 封开县| 上犹县| 河池市| 南部县| 玛沁县| 泗阳县| 封开县| 台江县| 德江县| 宜章县| 金门县| 武陟县| 忻州市| 马关县| 当雄县| 聂拉木县| 资中县| 大石桥市| 积石山| 万荣县| 都匀市| 兴国县| 西青区| 延津县| 东乡| 抚松县| 应城市| 云浮市| 乌什县| 南昌县| 勃利县| 巨野县| 衡东县|