涵蓋:觸發器、游標、函數、預存程序、交易。本講著重觸發器與游標。
定義:對某表特定操作觸發條件執行的程式,屬特殊預存程序。常見三類:INSERT、UPDATE、DELETE(SQL 2000 新觸發器略)。
兩表:Student(學生表)、BorrowRecord(借書記錄)。需求:
CREATE TRIGGER truStudent
ON Student
FOR UPDATE
-------------------------------------------------------
-- Name : truStudent
-- Func : 更新 BorrowRecord StudentID,與 Student 同步
-- Use : None
-- User : System
-- Author: 懶蟲 # SapphireStudio (www.chair3.com)
-- Date : 2003-4-16
-- Memo : 臨時範例,未調試
-------------------------------------------------------
AS
IF UPDATE(StudentID)
BEGIN
UPDATE BorrowRecord
SET br.StudentID = i.StudentID
FROM BorrowRecord br, Deleted d, Inserted i
WHERE br.StudentID = d.StudentID
END
理解 Deleted 與 Inserted 兩暫存表:分別代表觸發事件前舊記錄與新記錄。UPDATE 過程可視為:新記錄寫入 Inserted,舊記錄複製到 Deleted,刪除原記錄並寫入新記錄。
CREATE TRIGGER trdStudent
ON Student
FOR DELETE
-------------------------------------------------------
-- Name : trdStudent
-- Func : 同時刪除 BorrowRecord 資料
-- Use : None
-- User : System
-- Author: 懶蟲 # SapphireStudio (www.chair3.com)
-- Date : 2003-4-16
-- Memo : 臨時範例,未調試
-------------------------------------------------------
AS
DELETE BorrowRecord
FROM BorrowRecord br, Deleted d
WHERE br.StudentID = d.StudentID