資料庫觸發器小結

2021-08-27 10:30:18 字數 1730 閱讀 1779

觸發器是一種特殊型別的儲存過程。

觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。

ø 名稱:觸發器有乙個符合標誌符命名規則的名稱。

ø 定義的目標:觸發器必須定義在表或者檢視上。

ø 觸發條件:是update、insert還是delete語句。

ø 觸發邏輯:觸發之後如何處理。

ø after觸發器

after觸發器是告訴sql語句執行了insert、update或者delete操作後幹什麼。

ø instead of觸發器

告訴當要執行insert、update或delete操作時用什麼別的操作來代替。

ø 強化約束:觸發器能夠實現比check約束更為複雜的約束

ø 跟蹤變化:觸發器可以偵測資料庫內的操作,從而不允許資料庫中未經許可的變化。

ø 級聯執行

ø 儲存過程的呼叫

sql server在工作時為每個觸發器在伺服器的記憶體上建立兩個特殊的表:插入表和刪除表。

ø (1) 插入表的功能

一旦對該錶執行了插入(insert)操作,那麼對該錶插入的所有行來說,都有乙個相應的副本存放到inserted表中,即inserted表用來儲存原表插入的內容。

ø (2)刪除表的功能

一旦對該錶執行了刪除(delete)操作,則將所有的刪除行存放至deleted表中。這樣做的目的是,一旦觸發器遇到了強迫它中止的語句被執行時,刪除的那些行可以從deleted表中得以還原。

在建立觸發器以前必須考慮到以下幾個方面:

ø create trigger語句必須是批處理的第乙個語句。

ø 表的所有者具有建立觸發器的預設許可權,表的所有者不能把該許可權傳給其他使用者。

ø 觸發器是資料庫物件,所以其命名必須符合命名規則。

ø 儘管在觸發器的sql語句中可以參照其他資料庫中的物件,但是觸發器只能建立在當前資料庫中。

ø 雖然觸發器可以參照檢視或臨時表,但不能在檢視或臨時表上建立觸發器,只能在基表或在建立檢視的表上建立觸發器。

ø 乙個觸發器只能對應乙個表,這是由觸發器的機制決定的。

[例] 建立乙個觸發器,當向s表中插入一條記錄時,自動顯示s表中的記錄。

create trigger changedisplay

on s

for insert

asselect * from s

ø exec sp_help '觸發器名'

了解觸發器的一般資訊,如觸發器的名字、屬性、型別、建立時間

ø exec sp_helptext '觸發器名'

檢視觸發器的正文資訊

ø exec sp_depends '觸發器名'

ø exec sp_depends '表名 '

檢視指定觸發器所引用的表或指定的表所涉及到的所有觸發器

使用sp_rename修改觸發器的名字

sp_rename oldname,newname

用系統命令drop trigger刪除指定的觸發器

drop trigger 觸發器名

注:刪除觸發器所在的表時,sql server將自動刪除與該錶相關的觸發器。

資料庫觸發器

觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而 被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資料...

資料庫觸發器

最近做了個觸發器的例子 create trigger tru user on user for update asif update status begin update user set stopflag 1 from inserted where user.userid inserted.us...

資料庫 觸發器

觸發器的概念 是使用者定義在關係表上的一類有事件驅動的特殊過程。一旦定義,任何對錶的增刪改操作均有伺服器自動啟用相應的觸發器,在dbms核心層進行集中的完整性控制。類似於約束,但比約束更靈活。觸發器的分類 dml觸發器 dml data manipulation language 觸發器是當資料庫伺...