觸發器的作用_觸發器的主要作用是什么?

 

觸發器有如下作用:

1、可在寫入數據表前,強制檢驗或轉換數據。

2、觸發器發生錯誤時,異動的結果會被撤銷。

3、部分數據庫管理系統可以針對數據定義語言(DDL)使用觸發器,稱為DDL觸發器。

4、可依照特定的情況,替換異動的指令 (INSTEAD OF)。

 

觸發器是一種bai特殊類型的存儲過程,當使用下面的一種或多種數據修改操作在指定表中對數據進行修改時,觸發器會生效:UPDATE、INSERT 或 DELETE。觸發器可以查詢其它表,而且可以包含復雜的 SQL 語句。它們主要用于強制復雜的業務規則或要求。例如,可以控制是否允許基于顧客的當前帳戶狀態插入定單。

 

觸發器還有助于強制引用完整性,以便在添加、更新或刪除表中的行時保留表之間已定義的關系。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。如果使用數據庫關系圖,則可以在表之間創建關系以自動創建外鍵約束。

 

 

觸發器的優點如下:

1、觸發器是自動的:它們在對表的數據作了任何修改(比如手工輸入或者應用程序采取的操作)之后立即被激活;

2、觸發器可以通過數據庫中的相關表進行層疊更改。例如,可以在 titles 表的 title_id 列上寫入一個刪除觸發器,以使其它表中的各匹配行采取刪除操作。該觸發器用 title_id 列作為唯一鍵,在 titleauthor、sales 及 roysched 表中對各匹配行進行定位;

3、觸發器可以強制限制,這些限制比用 CHECK 約束所定義的更復雜。與 CHECK 約束不同的是,觸發器可以引用其它表中的列。例如,觸發器可以回滾試圖對價格低于 10 美元的書(存儲在 titles 表中)應用折扣(存儲在 discounts 表中)的更新。

 

觸發器的分類:

1、DML( 數據操縱語言 Data Manipulation Language)觸發器:是指觸發器在數據庫中發生DML事件時將啟用。DML事件即指在表或視圖中修改數據的insert、update、delete語句;

2、DDL(數據定義語言 Data Definition Language)觸發器:是指當服務器或數據庫中發生(DDL事件時將啟用。DDL事件即指在表或索引中的create、alter、drop語句也;

3、登陸觸發器:是指當用戶登錄SQL SERVER實例建立會話時觸發。

 

分類:

1、DML觸發器

當數據庫中表中的數據發生變化時,包括insert,update,delete任意操作,如果我們對該表寫了對應的DML觸發器,那么該觸發器自動執行。DML觸發器的主要作用在于強制執行業 務規則,以及擴展Sql Server約束,默認值等。因為我們知道約束只能約束同一個表中的數據,而觸發器中則可以執行任意Sql命令。

 

2、DDL觸發器

它是Sql Server2005新增的觸發器,主要用于審核與規范對數據庫中表,觸發器,視圖等結構上的操作。比如在修改表,修改列,新增表,新增列等。它在數據庫結構發生變化時執行,我們主要用它來記錄數據庫的修改過程,以及限制程序員對數據庫的修改,比如不允許刪除某些指定表等。

 

3、登錄觸發器

登錄觸發器將為響應 LOGIN 事件而激發存儲過程。與 SQL Server 實例建立用戶會話時將引發此事件。登錄觸發器將在登錄的身份驗證階段完成之后且用戶會話實際建立之前激發。因此,來自觸發器內部且通常將到達用戶的所有消息(例如錯誤消息和來自 PRINT 語句的消息)會傳送到 SQL Server 錯誤日志。如果身份驗證失敗,將不激發登錄觸發器。