SQL Server——觸發器

來源:互聯網
上載者:User

        在上一篇部落格中我們學習總結了預存程序,今天我們學習一種特殊的預存程序——觸發器。顧名思義,觸發器,就是通過某個事件一觸發它就會執行。現在我們還從它的概述,實現和管理三個方面來總結。

 

     一,概述:

 

             1,概念:觸發器是一種特殊類型的預存程序,它在插入,刪除或修改特定表中的資料時觸發執行。

                               通常可以執行一定的商務規則,以保持資料的完整性,檢查資料的有效性,實現資料庫

                               管理工作和一些附加的功能。看這張圖,我們會更明白些!

 

             2,優點:a,觸發器自動執行;b,可以調用預存程序;c,可以強化資料條件的約束;d,可以禁止或復原

                                違反參考完整性的更改;e,級聯,並行運行;d,同表多觸發器。

             3,分類:a,DML(Data Manipulation Language,資料操縱語言)觸發器,是在執行資料操作語言事件被

                                   調用時觸發的,其中insert,update和delete,alter等類型。

                                b,DLL(Dynamic Link Library,動態連結程式庫)觸發器,是由資料定義事件引起的,包括:create

                                    ,alter和drop語句。

 

     二,實現觸發器:

 

            1,建立:a,MDL觸發器

 

                              T-SQL文法:

                                  create  trigger [schema_name.] trigger_name on{table|view}

                                  [with   <dml_trigger_option>[,……n]]

                                  {for |after |instead of } {[insert],[update],[delete]} [with append]

                                  [not for replication] as  sql_statement[,……n]

                              文法說明:schema_name DML觸發器所屬架構的名稱;Trigger_name  觸發器的名稱;

                                        <dml_trigger_option>參數項,encryption和execute as選項;with append

                                         指定應該再添加一個現有類型的觸發器。Not for replication ,表示當觸

                                         及觸發器時,不應執行觸發器。

 

                             b,DLL觸發器

 

                             T-SQL文法:

                                 create trigger_name on {allserver|database}

                                  [with   <dll_trigger_option>[,……n]]

                                 {for|after} {event_type|event_group}[,……n]

                                 as  sql_statement[,……n]

                           說明:all_server|database,DDL觸發器響應的範圍,當前伺服器或當前資料庫。

                                        event_type|event_group,T-SQL語言事件的名稱或事件組的名稱。

 

 

           2,查看:a,查看觸發器的文本資訊sp_helptext

                              b,查看觸發器的相關性資訊sp_depends

                             c,一般資訊:sp_help

                    這裡查看觸發器和上篇部落格中查看預存程序一模一樣,因為它就是特殊的預存程序。

 

 

    三,管理觸發器

 

             1,修改:這裡修改兩種觸發器就是將建立它的文法中的create改成alter既可以。

             2,刪除:drop trigger

             3,啟用和禁用:alter table語句用於啟用和禁用觸發器

                              文法:alter table table {enable|disable}trigger,其中enable為啟用,disable為禁用

             4,使用嵌套觸發器:利用sp_configure

                                                 文法:sp_configure [[@configname=]'name] [,[@configvalue=]'value']

                                                說明:@configname:配置選項的名稱。

                                                             @configvalue當為0時為禁止嵌套,1為允許嵌套

             5,建立列級觸發器:使用update來建立

                                                 文法:if update (colum1) and|or update(column2)]

              6,遞迴觸發器:自行調用自身為遞迴觸發器。其中又分為直接遞迴和間接遞迴。

 

        當然這些操作都可以通過MicrosoftSQL Server Management Studio來直接設定,他跟預存程序中很多東西相同,我們可以通過實踐來學習很多。

 

        觸發器是資料庫中比較進階的應用,靈活使用觸發器可以大大增強應用程式的健壯性,資料庫的可恢複性和資料庫的可管理性。當然,只要我們能夠靈活的運用,我們可以利用它實現一些複雜的功能,簡化開發步驟,降低開發成本,增加開發效率,提高資料庫的可靠性。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.