觸發器的認識
一、觸發器簡介
觸發器(trigger)是sql server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作( insert,delete, update)時就會啟用它執行。觸發器經常用於加強資料的完整性約束和業務規則等。 觸發器可以從 dba_triggers ,user_triggers 資料字典中查到。sql3的觸發器是乙個能由系統自動執行對資料庫修改的語句。
觸發器是一種特殊的儲存過程,觸發器一般由事件觸發並且不能接受引數,儲存器由語句塊去呼叫
觸發器的定義就是說某個條件成立的時候,觸發器裡面所定義的語句就會被自動的執行。
因此觸發器不需要人為的去呼叫,也不能呼叫。
然後,觸發器的觸發條件其實在你定義的時候就已經設定好了。
這裡面需要說明一下,觸發器可以分為語句級觸發器和行級觸發器。
詳細的介紹可以參考網上的資料,簡單的說就是語句級的觸發器可以在某些語句執行前或執行後被觸發。而行級觸發器則是在定義的了觸發的表中的行資料改變時就會被觸發一次。
具體舉例:
1、 在乙個表中定義的語句級的觸發器,當這個表被刪除時,程式就會自動執行觸發器裡面定義的操作過程。這個就是刪除表的操作就是觸發器執行的條件了。
2、 在乙個表中定義了行級的觸發器,那當這個表中一行資料發生變化的時候,比如刪除了一行記錄,那觸發器也會被自動執行了。
二、觸發器分類:
dml觸發器
當資料庫中表中的資料發生變化時,包括insert,update,delete任意操作,如果我們對該錶寫了對應的dml觸發器,那麼該觸發器自動執行。dml觸發器的主要作用在於強制運行業 務規則,以及擴充套件sql server約束,預設值等。因為我們知道約束只能約束同乙個表中的資料,而觸發器中則可以執行任意sql命令。
ddl觸發器
它是sql server2005新增的觸發器,主要用於審核與規範對資料庫中表,觸發器,檢視等結構上的操作。比如在修改表,修改列,新增表,新增列等。它在資料庫結構發生變化時執行,我們主要用它來記錄資料庫的修改過程,以及限制程式設計師對資料庫的修改,比如不允許刪除某些指定表等。
登入觸發器
登入觸發器將為響應 login 事件而激發儲存過程。與 sql server 例項建立使用者會話時將引發此事件。登入觸發器將在登入的身份驗證階段完成之後且使用者會話實際建立之前激發。因此,來自觸發器內部且通常將到達使用者的所有訊息(例如錯誤訊息和來自 print 語句的訊息)會傳送到 sql server 錯誤日誌。如果身份驗證失敗,將不激發登入觸發器。
三、觸發器的語法:
create or replace trigger [trigger_name]
-- 觸發時機
--} 觸發操作
on -- 觸發器目標
[for each row] --可選 觸發器型別 [for each row (行級觸發器)] 或 語句觸發器
[when (condition)] --可選 觸發條件 可選擇加入觸發條件
begin
[pl\sql] --觸發器執行內容
endreferencing old 和 referencing new 的含義不同,具體取決於觸發器是行級還是語句級觸發器。對於行級觸發器,referencing old 子句允許引用更新或刪除之前行中的值,referencing new 子句允許引用已插入或更新的值。在 before 和 after 觸發器中可以引用 old 和 new 行。referencing new 子句允許在插入或更新操作發生之前在 before 觸發器中修改新行
四、觸發器的作用:
1、 允許/限制對錶的修改
2、 自動生成派生列,比如自增字段
3、 強制資料一致性
4、 提供審計和日誌記錄
5、 防止無效的事務處理
6、 啟用複雜的業務邏輯
觸發器的認識
觸發器的認識 一 觸發器簡介 觸發器 trigger 是sql server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作 insert,delete,update 時就會啟...
對觸發器的認識
對觸發器的認識 解答 觸發器是表上的程式,主要提供資料新增 修改與刪除後的程式處理方法,可以用來檢查資料及進行資料更新,也可以分擔一些前端應用程式撰寫的邏輯規則。用場景 觸發器可以查詢其他表,而且可以包含複雜的sql語句。它們主要用於強制複雜的業務規則或要求。觸發器的主要應用場合概括起來講有以下幾種...
儲存過程 觸發器的認識
儲存過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件。與表事件相關的特殊的儲存過程。他的執...