首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

《高效能資料庫》第四講 程式設計細節(一):觸發器與游標基礎

     編輯:關於SqlServer

第四講 程式設計細節(上)

涵蓋:觸發器、游標、函數、預存程序、交易。本講著重觸發器與游標。

1. 觸發器

定義:對某表特定操作觸發條件執行的程式,屬特殊預存程序。常見三類:INSERT、UPDATE、DELETE(SQL 2000 新觸發器略)。

應用場景

兩表:Student(學生表)、BorrowRecord(借書記錄)。需求:

  1. 修改學號時同步更新借書記錄學號。
  2. 刪除畢業生學號時同步刪除其借書記錄。

UPDATE 觸發器範例

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,刪除原記錄並寫入新記錄。

DELETE 觸發器範例

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
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved