1)觸發器是一種特殊型別的儲存過程,它由事件觸發,而不是程式呼叫或手工啟動,當資料庫有特殊的操作時,這些操作由資料庫中的事件來觸發,自動完成這些sql語句。
2)使用觸發器可以用來保證資料的有效性和完整性,完成比約束更複雜的資料約束
3)觸發器可以查詢其他表,而且可以包含複雜的 sql 語句。 它們主要用於強**從複雜的業務規則或要求。 例如,您可以根據客戶當前的帳戶狀態,控制是否允許插入新訂單。
4)觸發器也可用於強制引用完整性,以便在多個表中新增、更新或刪除行時,保留在這些表之間所定義的關係。
1)觸發器可通過資料庫中的相關表實現級聯更改;通過級聯引用完整性約束可以更有效地執行這些更改。
2)觸發器可以強制比用 check 約束定義的約束更為複雜的約束。與 check 約束不同,觸發器可以引用其它表中的列。例如,觸發器可以使用另乙個表中的 select 比較插入或更新的資料,以及執行其它操作,如修改資料或顯示使用者定義錯誤資訊。
3)觸發器還可以強制執行業務規則
4)觸發器也可以評估資料修改前後的表狀態,並根據其差異採取對策。
觸發器儲存過程
當某類資料操作dml語句發生時隱式地呼叫
從乙個應用或過程中顯示地呼叫
在觸發器體內禁止使用commit和rollback語句
在過程體內可以使用所有pl/sql塊中都能使用的sql語句,包括commit和rollback語句
不能接受引數輸入
可以接受引數輸入
根據sql語句的不同,觸發器可分為資料操作語言dml觸發器和資料定義語言dll觸發器。通常說的觸發器就是dml觸發器。
1)dml觸發器是當資料庫伺服器發生資料操作語言事件時執行的儲存過程,有after 和 instead of 這兩種觸發器。
1. after 觸發器被啟用觸發是在記錄改變之後進行的一種觸發器(只有執行某一操作之後才觸發)。只能定義在表上。
2. instead of 觸發器是在記錄變更之前,去執行觸發器本身所定義的操作,而不是執行原來sql語句裡的操作。既可以 在表上定義instead of觸發器,也可以在檢視上定義。
當insert、update或delete語句修改指定表或檢視中的資料時,可以使用 dml 觸發器。dml 觸發器在insert、update 和 delete 語句上操作,並且有助於在表或檢視中修改資料時強制業務規則,擴充套件資料完整性。
2)dll 觸發器是在響應資料定義語言事件時執行的儲存過程。ddl 觸發器激發儲存過程以響應各種 ddl 語句,這些語句主要以create、alter和drop開頭。ddl 觸發器可用於管理任務,例如審核和控制資料庫操作。
ddl 觸發器將激發儲存過程以響應事件。但與 dml 觸發器不同的是,它們不會為響應針對表或檢視的 update、insert 或 delete 語句而激發。相反,它們將為了響應各種資料定義語言 (ddl) 事件而激發。這些事件主要與以關鍵字 create、alter 和 drop 開頭的 transact-sql 語句對應。執行 ddl 式操作的系統儲存過程也可以激發 ddl 觸發器。
ddl 觸發器使用場合:
要防止對資料庫架構進行某些更改。 希望資料庫中發生某種情況以響應資料庫架構中的更改。 要記錄資料庫架構中的更改或事件。create trigger trigger_name
on
[ insert, update,delete ]
as
sql_statement
觸發器及觸發器的作用
觸發器是一種用來保障參照完整性的特殊的儲存過程,它維護不同表中資料間關係的有關規則。當對指定的表進行某種特定操作 如 insert,delete或update 時,觸發器產生作用。觸發器可以呼叫儲存過程。建立觸發器的語法 create trigger owner.觸發器名 on owner.表名 f...
資料庫觸發器
觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而 被直接呼叫。當對某一表進行諸如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...