国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

觸發器概述

2024-07-21 02:12:57
字體:
來源:轉載
供稿:網友
   在上面幾節我們介紹了一般意義的存儲過程,即用戶自定義的存儲過程和系統存儲過程。本節將介紹一種特殊的存儲過程,即觸發器。在余下各節中我們將對觸發器的概念、作用以及對其的使用方法作詳盡介紹,使讀者了解如何定義觸發器,創建和使用各種不同復雜程度的觸發器。

12.5.1 觸發器的概念及作用
    觸發器是一種特殊類型的存儲過程,它不同于我們前面介紹過的存儲過程。觸發器主要是通過事件進行觸發而被執行的,而存儲過程可以通過存儲過程名字而被直接調用。當對某一表進行諸如update、 insert、 delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對數據的處理必須符合由這些sql 語句所定義的規則。
    觸發器的主要作用就是其能夠實現由主鍵和外鍵所不能保證的復雜的參照完整性和數據的一致性。除此之外,觸發器還有其它許多不同的功能:
(1) 強化約束(enforce restriction)
觸發器能夠實現比check 語句更為復雜的約束。

(2) 跟蹤變化auditing changes
觸發器可以偵測數據庫內的操作,從而不允許數據庫中未經許可的指定更新和變化。

(3) 級聯運行(cascaded operation)。
觸發器可以偵測數據庫內的操作,并自動地級聯影響整個數據庫的各項內容。例如,某個表上的觸發器中包含有對另外一個表的數據操作(如刪除,更新,插入)而該操作又導致該表上觸發器被觸發。

(4) 存儲過程的調用(stored procedure invocation)。
為了響應數據庫更新觸,發器可以調用一個或多個存儲過程,甚至可以通過外部過程的調用而在dbms( 數據庫管理系統)本身之外進行操作。
    由此可見,觸發器可以解決高級形式的業務規則或復雜行為限制以及實現定制記錄等一些方面的問題。例如,觸發器能夠找出某一表在數據修改前后狀態發生的差異,并根據這種差異執行一定的處理。此外一個表的同一類型(insert、 update、 delete)的多個觸發器能夠對同一種數據操作采取多種不同的處理。
    總體而言,觸發器性能通常比較低。當運行觸發器時,系統處理的大部分時間花費在參照其它表的這一處理上,因為這些表既不在內存中也不在數據庫設備上,而刪除表和插入表總是位于內存中。可見觸發器所參照的其它表的位置決定了操作要花費的時間長短。

12.5.2 觸發器的種類


    sql server 2000 支持兩種類型的觸發器:after 觸發器和instead of 觸發器。其中after 觸發器即為sql server 2000 版本以前所介紹的觸發器。該類型觸發器要求只有執行某一操作(insert update delete) 之后,觸發器才被觸發,且只能在表上定義。可以為針對表的同一操作定義多個觸發器。對于after 觸發器,可以定義哪一個觸發器被最先觸發,哪一個被最后觸發,通常使用系統過程sp_settriggerorder 來完成此任務。

    instead of 觸發器表示并不執行其所定義的操作(insert、 update、 delete),而僅是執行觸發器本身。既可在表上定義instead of 觸發器,也可以在視圖上定義instead of 觸發器,但對同一操作只能定義一個instead of 觸發器。

  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  • 上一篇:系統存儲過程

    下一篇:管理存儲過程

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 开化县| 科技| 舞阳县| 白山市| 新竹县| 乌兰察布市| 饶阳县| 磴口县| 香河县| 吐鲁番市| 东阿县| 郎溪县| 原阳县| 绥滨县| 邢台市| 临海市| 微山县| 临泽县| 黎川县| 通海县| 海安县| 靖安县| 县级市| 准格尔旗| 光泽县| 潮州市| 津市市| 遵义市| 通海县| 信阳市| 内黄县| 宁国市| 探索| 广德县| 正宁县| 菏泽市| 平凉市| 东海县| 泽州县| 牙克石市| 张家界市|