使用觸發程序
觸發程序 (Trigger) 是一種特殊的預存程序,在您使用一或多項資料修改作業 (UPDATE、INSERT 或 DELETE),於指定資料表內修改資料時執行。 名為 INSTEAD OF 的特殊觸發程序,可以指定對檢視的基礎基底資料表的修改。
觸發程序可以查詢其他資料表,並且包含複雜的 SQL 陳述式。 主要的用處在於實行複雜的商務規則 (Business Rule) 或要求。 例如,您可以控制是否根據客戶目前的帳戶狀態,允許插入新訂單。
觸發程序對於參考完整性 (Referential Integrity) 的強制執行也十分有用,可在加入、更新或刪除資料表內的資料列時,保留資料表之間的關聯性。 不過,強制執行參考完整性的最佳方式,仍是在關聯資料表內定義主索引鍵及外部索引鍵條件約束。 如果您使用 [資料表設計工具],可於資料表之間建立關聯性以便自動建立外部索引鍵條件約束。 如需詳細資訊,請參閱資料表關聯性 (Visual Database Tools)。
觸發程序好用之處在於:
觸發程序是自動的。 資料表的資料一經修改 (例如手動輸入或應用程式動作) 後,觸發程序就會立即啟動。
觸發程序可透過資料庫的關聯資料表串聯 (Cascade) 變更。 例如,您可以在 titles 資料表的 title_id 資料行中,寫入某個刪除觸發程序,以便刪除其他資料表中相符的資料列。 觸發程序使用 title_id 資料行做為唯一鍵,以便從 titleauthor、sales 和 roysched 資料表中找出符合的資料列。
觸發程序可強制執行比檢查條件約束 (Visual Database Tools) 所定義更為複雜的限制。 觸發程序與檢查條件約束不同,前者可以參考其他資料表的資料行。 例如,觸發程序可以復原將折扣 (儲存於 discounts 資料表) 套用至價格低於 $10 書籍 (儲存於 titles 資料表) 的更新動作。
如需觸發程序的詳細資訊和範例,請參閱您的資料庫伺服器文件。 如果您使用 Microsoft SQL Server,請參閱《SQL Server 線上叢書》的<建立觸發程序>部分。