萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mssql數據庫 >> sql server 存儲過程和觸發器

sql server 存儲過程和觸發器

   一.存儲過程

  1.存儲過程的分類

  存儲過程是一種數據庫對象,存儲在數據庫內,可由應用程序通過一個調用執行,而且

  允許用戶聲明變量、有條件執行,具有很強的編程功能

  存儲過程可以分為兩類:系統存儲過程、用戶存儲過程和擴展性存儲過程

  1).系統存儲過程

  系統存儲過程是由SQL Server系統提供的存儲過程,可以作為命令執行各種操作。

  系統存儲過程主要用來從系統表中獲取信息,為系統管理員管理SQL Server提供幫助,

  為用戶查看數據庫對象提供方便。

  系統存儲過程定義在系統數據庫master中,其前綴是sp_。在調用時不必在存儲過程前

  加上數據庫名

  2).用戶存儲過程

  用戶存儲過程是指用戶根據自身需要,為完成某一特定功能,在用戶數據庫中創建的存

  儲過程。

  3).擴展存儲過程

  擴展存儲過程以在SQL Server環境外執行的動態鏈接庫(DLL,Dynamic-LinkLibrar-ies)

  來實現。擴展存儲過程通過前綴“xp_”來標識,它們以與存儲過程相似的方式來執行。

  二.觸發器

  觸發器是當特定事件出現的時候,自動執行或者激活的,與連接到數據庫中的用戶或者應用程序無關.。一個表最多有三種不同類型的觸發器,當UPDATE發生時使用一個觸發器;DELETE發生時使用一個觸發器;INSERT發生時使用一個觸發器

  1.與存儲過程的區別

  觸發器與存儲過程主要的區別在於觸發器的運行方式。存儲過程必須由用戶、應用程序或者觸發器來顯示式地調用並執行,而觸發器是當特定事件出現的時候,自動執行或者激活的,與連接到數據庫中的用戶或者應用程序無關

  注意: 盡管觸發器的功能強大,但是它們也可能對服務器的性能很有害。因此,要注意不要在觸發器中放置太多的功能,因為它將降低響應速度,使用戶等待的時間增加

  2.觸發器的分類

  1). DDL 觸發器

  DDL觸發器當服務器或者數據庫中發生數據定義語言(DDL)事件時將被調用

  2). DML 觸發器

  DML觸發器是當數據庫服務器中發生數據操作語言(DML)事件時要執行的操作

  3.兩種特殊的表:DELETED表和INSERTED表

  SQL Server 2008為每個觸發器語句都創建了兩種特殊的表:DELETED表和INSERTED表。

  這是兩個邏輯表,由系統來自創建和維護,用戶不能對他們進行修改。他們存放在內存而不

  是數據庫中。這兩個表的結構總是與被該觸發器作用的表的結構相同。觸發器執行完成後,

  與該觸發器相關的這兩個表也會被刪除

  DELETE表存放由執行DELETE或者UPDATE語句而要從表中刪除的所有行。在執行DELE

  TE或者UPDATE操作時,被刪除的行從觸發觸發器的表中被移動到DELETE表,這兩個表不

  會有共同的行。

  INSERT 表存放由執行INSERET或者UPDATE語句而要向表中插入的所有行。在執行INS

  ERT或者UPDATE事務中,新的行同時添加到觸發觸發器的表和INSERT表中,INSERT表的內

  容是觸發觸發器的表中新行的副本。

  注意: 一個UPDATE事務可以看作先執行一個DELETE 操作,再執行一個INSERT操作,舊的行首先被移動到DELETE 表,然後新行同時插入觸發觸發器的表和INSERT表。

copyright © 萬盛學電腦網 all rights reserved