上面介紹了有關觸發器的概念、作用和一些基本問題,下面我們將分別介紹在MS SQLServer 中如何用SQL Server 管理工具Enterprise Manager 和Transaction_SQL 來創建觸發器。
在創建觸發器以前必須考慮到以下幾個方面:
- CREATE TRIGGER 語句必須是批處理的第一個語句;
- 表的所有者具有創建觸發器的缺省權限,表的所有者不能把該權限傳給其它用戶;
- 觸發器是數據庫對象,所以其命名必須符合命名規則;
- 盡管在觸發器的SQL 語句中可以參照其它數據庫中的對象,但是,觸發器只能創建在當前數據庫中;
- 雖然觸發器可以參照視圖或臨時表,但不能在視圖或臨時表上創建觸發器,而只能在基表或在創建視圖的表上創建觸發器;
- 一個觸發器只能對應一個表,這是由觸發器的機制決定的;
- 盡管TRUNCATE TABLE 語句如同沒有WHERE 從句的DELETE 語句,但是由於TRUNCATE TABLE 語句沒有被記入日志,所以該語句不能觸發DELETE 型觸發器;
- WRITETEXT 語句不能觸發INSERT 或UPDATE 型的觸發器。
當創建一個觸發器時,必須指定觸發器的名字,在哪一個表上定義觸發器,激活觸發 器的修改語句,如INSERT、 DELETE、 UPDATE。 當然兩個或三個不同的修改語句也可 以都觸發同一個觸發器,如INSERT 和UPDATE 語句都能激活同一個觸發器。
12.6.1 用管理工具Enterprise Manger 創建觸發器
其操作步驟如下:
- 啟動Enterprise Manger, 登錄到指定的服務器上。
- 展開數據庫,然後展開要在其上創建觸發器的表所在的數據庫,然後單擊該表。
- 右擊鼠標,在彈出菜單中選擇ALL Tasks, 然後單擊Manage Triggers…。
- 在名字框中選擇new, 在文本框中輸入觸發器文本,如圖12-5 所示。
- 單擊Check Syntax 檢查語句是否正確。
- 單擊Apply, 在Name 下拉列表中會有新創建的觸發器名字。
- 單擊OK, 關閉窗口創建成功。
12.6.2 用CREATE TRIGGER 命令創建觸發器
各參數的說明如下:
- trigger_name
是用戶要創建的觸發器的名字觸發器的名字,