觸發器是一種特殊型別的儲存過程。
觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。
ø 名稱:觸發器有乙個符合標誌符命名規則的名稱。
ø 定義的目標:觸發器必須定義在表或者檢視上。
ø 觸發條件:是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 觸發器是當資料庫伺...