帶您了解SQL Server觸發(fā)器的優(yōu)點(diǎn)
在SQL Server數(shù)據(jù)庫(kù)中,SQL Server觸發(fā)器是一種特殊類(lèi)型的存儲(chǔ)過(guò)程。下面對(duì)SQL Server觸發(fā)器的優(yōu)點(diǎn)作了詳細(xì)的介紹,供您參考。
它在您使用一種或多種數(shù)據(jù)修改操作(UPDATE、INSERT 或 DELETE)來(lái)修改指定表中的數(shù)據(jù)時(shí)運(yùn)行。稱為 INSTEAD OF 觸發(fā)器的特殊觸發(fā)器可以指定對(duì)視圖的基礎(chǔ)基表的修改。
SQL Server觸發(fā)器可以查詢其他表,而且可以包含復(fù)雜的 SQL 語(yǔ)句。它們主要用于強(qiáng)制服從復(fù)雜的業(yè)務(wù)規(guī)則或要求。例如,您可以根據(jù)客戶當(dāng)前的帳戶狀態(tài),控制是否允許插入新訂單。
SQL Server觸發(fā)器也可用于強(qiáng)制引用完整性,以便在多個(gè)表中添加、更新或刪除行時(shí),保留在這些表之間所定義的關(guān)系。然而,強(qiáng)制引用完整性的***方法是在相關(guān)表中定義主鍵和外鍵約束。如果使用表設(shè)計(jì)器,則可以在表之間創(chuàng)建關(guān)系以自動(dòng)創(chuàng)建外鍵約束。
觸發(fā)器的優(yōu)點(diǎn)如下:
觸發(fā)器是自動(dòng)的。它們?cè)趯?duì)表的數(shù)據(jù)作了任何修改(比如手工輸入或者應(yīng)用程序采取的操作)之后立即被激活。
觸發(fā)器可以通過(guò)數(shù)據(jù)庫(kù)中的相關(guān)表進(jìn)行級(jí)聯(lián)更改。例如,可以在 titles 表的 title_id 列上編寫(xiě)一個(gè)刪除觸發(fā)器,以觸發(fā)在其他表中刪除各匹配行的操作。該觸發(fā)器用 title_id 列作為唯一鍵,在 titleauthor、sales 和 roysched 表中對(duì)各匹配行進(jìn)行定位。
觸發(fā)器可以強(qiáng)制限制,這些限制比用 CHECK 約束 (Visual Database Tools) 所定義的更復(fù)雜。與 CHECK 約束不同的是,觸發(fā)器可以引用其他表中的列。例如,觸發(fā)器可以回滾嘗試對(duì)價(jià)格低于 10 美元的書(shū)(存儲(chǔ)在 titles 表中)應(yīng)用折扣(存儲(chǔ)在 discounts 表中)的更新。
【編輯推薦】