【正文】
TRIGGER trigger_9_1 ON xskc FOR UPDATE ASPRINT ‘學生課程表被修改了’ GO 執(zhí)行后,在學生課程表上觸發(fā)器trigger_9_1創(chuàng)建成功。創(chuàng)建觸發(fā)器trigger_9_3,實現(xiàn)當刪除學生課程表中某門課程的記錄時,對應學生成績表中所有有關此課程的記錄均刪除??梢栽诓樵兎治銎鞯牟樵兇翱谥休斎肴缦抡Z句: USE 學生成績庫 GO CREATE TRIGGER trigger_9_3 ON xskc FOR DELETE ASC程序設計 實訓DELETE xscj FROM xscj,deleted WHERE = GO創(chuàng)建觸發(fā)器trigger_9_4,實現(xiàn)當修改學生課程表(xskc)中的某門課的課程號時,對應學生成績表(xscj)中的課程號也作修改。當修改學生課程表中記錄時,相當于刪除一條舊記錄并插入一條新記錄,刪除的舊記錄在deleted臨時表中,插入的新記錄在inserted臨時表中。因此,可以通過在查詢分析器的查詢窗口中輸入如下語句創(chuàng)建觸發(fā)器:USE 學生成績庫 GO CREATE TRIGGER trigger_9_4 ON xskc FOR UPDATE ASIF update(課程號)BEGIN UPDATE xscjSET 課程號=(SELECT 課程號 FROM inserted)FROM xscj,deleted WHERE = END GO 我們可以通過修改某門課的課程號,來查看觸發(fā)器是否被激發(fā)執(zhí)行了?,F(xiàn)在通C程序設計 實訓過一個語句修改原課程號為“101”的學生課程表中的記錄,將其課程號改為“111:”UPDATE xskc SET 課程號=’111’ WHERE 課程號=’101’然后,再查看一下學生成績表中的記錄??梢钥吹皆瓉淼摹?01”課程的課程號均改成了“111”,但課程名不變,還是“計算機文化基礎”。修改觸發(fā)器如果需要修改觸發(fā)器的定義,只需一個操作即可除去并重新創(chuàng)建觸發(fā)器,或重新定義已有觸發(fā)器。如果更改觸發(fā)器引用的對象名,則必須修改觸發(fā)器使其文本反映新的名稱。因此,在重命名對象前,首先顯示該對象的相關性,以確定所建議的更改是否會影響任何觸發(fā)器。也可以重命名觸發(fā)器。新名稱必須遵守標識符規(guī)則。您只能重命名自己擁有的觸發(fā)器,而數(shù)據(jù)庫所有者可以更改任意用戶的觸發(fā)器名稱。需重命名的觸發(fā)器必須位于當前數(shù)據(jù)庫中??梢允褂肁LTER TRIGGER語句修改觸發(fā)器?,F(xiàn)要對它進行修改,要求顯示的提示信息改為“學生課程表中課程號為XXX的記錄被修改了”??梢栽诓樵兎治銎鞯牟樵兇翱谥惺褂肁LTER TRIGGER語句修改觸發(fā)器,語句如下:USE 學生成績庫C程序設計 實訓GO ALTER TRIGGER trigger_9_2 ON xskc FOR UPDATE ASDECLARE @kch char(3)SELECT @kch=課程號 FROM deleted PRINT ‘學生課程表中課程號為’+@kch+’的記錄被修改了’ GO 觸發(fā)器被修改,再執(zhí)行下述更新語句: UPDATE xskc SET 學分=5 WHERE 課程號=39。10139。 可以在結果窗格中,看到消息:“學生課程表中課程號為101的記錄被修改了”。刪除觸發(fā)器當不再需要某個觸發(fā)器時,可將其刪除。當觸發(fā)器被刪除時,它所基于的表和數(shù)據(jù)并不受影響。刪除表將自動刪除其上的所有觸發(fā)器。刪除觸發(fā)器的權限默認授予在該觸發(fā)器所在表的所有者。可以使用DROP TRIGGER語句刪除觸發(fā)器。刪除學生課程表上的觸發(fā)器trigger_9_2。在查詢分析器的查詢窗口中輸入語句: DROP TRIGGER trigger_9_2 執(zhí)行后,觸發(fā)器即被刪除。C程序設計 實訓