13.3.2 創(chuàng)建觸發(fā)器
1、 創(chuàng)建觸發(fā)器的語句:CREATE TRIGGER,語法為:
CREATE TRIGGER 觸發(fā)器名稱
ON {表名| 視圖名}
[WITH ENCRYPTION]
{FOR |AFTER|INSTEAD OF}{[INSERT][,][DELETE][,][UPDATE]}
AS
[{IF UPDATE(column)…}]
SQL語句
(1) 觸發(fā)器名稱在數(shù)據(jù)庫中必須是惟一的;
(2) ON子句用于指定在其上執(zhí)行觸發(fā)器的表;
(3) AFTER:指定觸發(fā)器只有在引發(fā)的SQL語句中指定的操作都已成功執(zhí)行,并且所有的約束檢查也成功完成后,才執(zhí)行此觸發(fā)器,這種觸發(fā)器稱為后觸發(fā)型觸發(fā)器;
(4) FOR:作用同AFTER;
(5) INSTEAD OF:指定執(zhí)行觸發(fā)器而不是執(zhí)行引發(fā)觸發(fā)器執(zhí)行的SQL語句,從而替代觸發(fā)語句的操作,這種觸發(fā)器稱為前觸發(fā)型觸發(fā)器;
(6) INSTERT、DELETE或UPDATE是引發(fā)觸發(fā)器執(zhí)行的操作,若同時指定多個操作,則各操作之間用逗號分隔;
2、 創(chuàng)建觸發(fā)器時,需要注意:
(1) 在一個表上可以建立多個名稱不同、類型各異的觸發(fā)器,每個觸發(fā)器可由三個操作引發(fā);
(2) 大部分Transact-SQL語句都可用在觸發(fā)器中,但也有一些限制;
(3) 在觸發(fā)器定義中,可以使用IF UPDATE子句測試在INSERT和UPDATE語句中是否對指定字段有影響;
(4) 通常不要在觸發(fā)器中返回任何結(jié)果。
3、 創(chuàng)建后觸發(fā)型觸發(fā)器
使用FOR或AFTER選項定義的觸發(fā)器為后觸發(fā)的觸發(fā)器,即只有在引發(fā)觸發(fā)器執(zhí)行語句中指定的操作都已完成執(zhí)行,并且所有的約束檢查也成功完成后,才執(zhí)行的觸發(fā)器;
4、 創(chuàng)建前觸發(fā)型觸發(fā)器
使用INSTEAD OF 選項定義的觸發(fā)器為前觸發(fā)型觸發(fā)器,在該觸發(fā)器中,指定執(zhí)行觸發(fā)器而不是執(zhí)行引發(fā)觸發(fā)器執(zhí)行的SQL語句,從而替代引發(fā)語句的操作。
13.4 查看、修改及刪除對象
13.4.1 查看對象
對于創(chuàng)建好的存儲過程、函數(shù)可通過企業(yè)管理器和查詢分析器查看這些對象的代碼;
13.4.2 修改對象
1、 修改存儲過程:ALTER PROCEDURE
ALTER PROC 存儲過程名
[{@參數(shù)名 數(shù)據(jù)類型}[=default][OUTPUT]][,…n]
AS
SQL語句[…n]
修改與定義的語句基本一致,只將CREARE PROC 改成ALTER PROC;
2、修改用戶自定義函數(shù):
修改與定義的語句基本一致,只將CREARE FUNCTION 改成ALTER FUNCTION;
3、修改觸發(fā)器:
修改與定義的語句基本一致,只將CREARE TRIGGER 改成ALTER TRIGGER;
13.4.3 刪除對象
1、 刪除存儲過程:
DROP PROCEDURE {存儲過程名}[,…n];
2、刪除用戶自定義函數(shù)
DROP FUNCTION {[擁有者名.]函數(shù)名}[,…n]
3、刪除觸發(fā)器
DROP TRIGGER {觸發(fā)器名}[,…n]
相關(guān)推薦:2010年9月計算機等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |