作為一名軟件開發(fā)人員,應全面了解數(shù)據(jù)庫的運用。在數(shù)據(jù)庫SQL Sever中,有一種存儲過程是十分重要的,那就是觸發(fā)器。它與普通的存儲過程有所不同,它是通過事件進行觸發(fā)被自動調用執(zhí)行的。而存儲過程可以通過存儲過程的名稱被調用。下面小編就給大家介紹觸發(fā)器基本語法與作用。
首先,我們要了解什么是觸發(fā)器?
觸發(fā)器是在對表進行插入、更新或刪除操作時自動執(zhí)行的存儲過程。 觸發(fā)器對表進行插入、更新、刪除的時候會自動執(zhí)行的特殊存儲過程。觸發(fā)器一般用在check約束更加復雜的約束上面。觸發(fā)器和普通的存儲過程的區(qū)別是:觸發(fā)器是當對某一個表進行操作。諸如:update、insert、delete這些操作的時候,系統(tǒng)會自動調用執(zhí)行該表上對應的觸發(fā)器。SQL Server 2005中觸發(fā)器可以分為兩類:DML觸發(fā)器和DDL觸發(fā)器,其中DDL觸發(fā)器它們會影響多種數(shù)據(jù)定義語言語句而激發(fā),這些語句有create、alter、drop語句。
SQL Server為每個觸發(fā)器都創(chuàng)建了兩個專用表﹕Inserted表和Deleted表。
觸發(fā)器通常用于強制業(yè)務規(guī)則。它是一種高級約束,可以定義比用CHECK 約束更為復雜的約束:
(1)可執(zhí)行復雜的SQL語句(if/while/case);
(2)可引用其它表中的列;
(3)觸發(fā)器定義在特定的表上,與表相關。
(4)自動觸發(fā)執(zhí)行;
(5)不能直接調用;
(6)是一個事務(可回滾);
使用觸發(fā)器的好處
觸發(fā)器可通過數(shù)據(jù)庫中的相關表實現(xiàn)級聯(lián)更改,不過,通過級聯(lián)引用完整性約束可以更有效地執(zhí)行這些更改。
觸發(fā)器可以強制比用CHECK約束定義的約束更為復雜的約束。與 CHECK 約束不同,觸發(fā)器可以引用其它表中的列。例如,觸發(fā)器可以使用另一個表中的 SELECT 比較插入或更新的數(shù)據(jù),以及執(zhí)行其它操作,如修改數(shù)據(jù)或顯示用戶定義錯誤信息。觸發(fā)器也可以評估數(shù)據(jù)修改前后的表狀態(tài),并根據(jù)其差異采取對策。
一個表中的多個同類觸發(fā)器(INSERT、UPDATE 或 DELETE)允許采取多個不同的對策以響應同一個修改語句。
觸發(fā)器的類型
DELETE 觸發(fā)器
INSERT 觸發(fā)器
UPDATE 觸發(fā)器
觸發(fā)器有兩個特殊的表:插入表(instered表)和刪除表(deleted表)。這兩張是邏輯表也是虛表。有系統(tǒng)在內存中創(chuàng)建者兩張表,不會存儲在數(shù)據(jù)庫中。而且兩張表的都是只讀的,只能讀取數(shù)據(jù)而不能修改數(shù)據(jù)。這兩張表的結果總是與被改觸發(fā)器應用的表的結構相同。當觸發(fā)器完成工作后,這兩張表就會被刪除。Inserted表的數(shù)據(jù)是插入或是修改后的數(shù)據(jù),而deleted表的數(shù)據(jù)是更新前的或是刪除的數(shù)據(jù)。
對表的操作 | Inserted邏輯表 | Deleted邏輯表 |
增加記錄(insert) | 存放增加的記錄 | 無 |
刪除記錄(delete) | 無 | 存放被刪除的記錄 |
修改記錄(update) | 存放更新后的記錄 | 存放更新前的記錄 |
Update數(shù)據(jù)的時候就是先刪除表記錄,然后增加一條記錄。這樣在inserted和deleted表就都有update后的數(shù)據(jù)記錄了。注意的是:觸發(fā)器本身就是一個事務,所以在觸發(fā)器里面可以對修改數(shù)據(jù)進行一些特殊的檢查。如果不滿足可以利用事務回滾,撤銷操作。
數(shù)據(jù)庫SQLSever觸發(fā)器語法
以上內容是關于數(shù)據(jù)庫SQLSever觸發(fā)器的介紹,唯學網小編提醒,關于數(shù)據(jù)庫資訊、學習指導等相關內容的請繼續(xù)關注唯學網。小編會第一時間為大家更新跟進最新信息,如有任何疑問也可在線留言,小編會為您在第一時間解答!
|
|
||
|
|