① sql觸發器有什麼用處啊
觸發器是一種特殊類型的存儲過程,它在指定的表中的數據發生變化時自動生效。喚醒調用觸發器以響應 INSERT、UPDATE 或 DELETE 語句。觸發器可以查詢其它表,並可以包含復雜的 Transact-SQL 語句。將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待。如果檢測到嚴重錯誤(例如,磁碟空間不足),則整個事務即自動回滾。 觸發器可通過資料庫中的相關表實現級聯更改;不過,通過級聯引用完整性約束可以更有效地執行這些更改。 觸發器可以強制比用 CHECK 約束定義的約束更為復雜的約束。 與CHECK 約束不同,觸發器可以引用其它表中的列。例如,觸發器可以使用另一個表中的 SELECT 比較插入或更新的數據,以及執行其它操作,如修改數據或顯示用戶定義錯誤信息。 觸發器也可以評估數據修改前後的表狀態,並根據其差異採取對策。 一個表中的多個同類觸發器(INSERT、UPDATE 或 DELETE)允許採取多個不同的對策以響應同一個修改語句。 比較觸發器與約束 約束和觸發器在特殊情況下各有優勢。觸發器的主要好處在於它們可以包含使用 Transact-SQL 代碼的復雜處理邏輯。因此,觸發器可以支持約束的所有功能;但它在所給出的功能上並不總是最好的方法。 實體完整性總應在最低級別上通過索引進行強制,這些索引或是 PRIMARY KEY 和 UNIQUE 約束的一部分,或是在約束之外獨立創建的。假設功能可以滿足應用程序的功能需求,域完整性應通過 CHECK 約束進行強制,而引用完整性 (RI) 則應通過 FOREIGN KEY 約束進行強制。 在約束所支持的功能無法滿足應用程序的功能要求時,觸發器就極為有用。例如: 除非REFERENCES 子句定義了級聯引用操作,否則 FOREIGN KEY 約束只能以與另一列中的值完全匹配的值來驗證列值。 CHECK 約束只能根據邏輯表達式或同一表中的另一列來驗證列值。如果應用程序要求根據另一個表中的列驗證列值,則必須使用觸發器。 約束只能通過標準的系統錯誤信息傳遞錯誤信息。如果應用程序要求使用(或能從中獲益)自定義信息和較為復雜的錯誤處理,則必須使用觸發器。 觸發器可通過資料庫中的相關表實現級聯更改;不過,通過級聯引用完整性約束可以更有效地執行這些更改。 觸發器可以禁止或回滾違反引用完整性的更改,從而取消所嘗試的數據修改。當更改外鍵且新值與主鍵不匹配時,此類觸發器就可能發生作用。例如,可以在 titleauthor.title_id 上創建一個插入觸發器,使它在新值與 titles.title_id 中的某個值不匹配時回滾一個插入。不過,通常使用 FOREIGN KEY 來達到這個目的。 如果觸發器表上存在約束,則在 INSTEAD OF 觸發器執行後但在 AFTER 觸發器執行前檢查這些約束。
② 誰知道在SQL中什麼是觸發器,有什麼作用
觸發器是一種特殊類型的存儲過程,不由用戶直接調用。創建觸發器時會對其進行定義,以便在對特定表或列作特定類型的數據修改時執行。
CREATE PROCEDURE 或 CREATE TRIGGER 語句不能跨越批處理。即存儲過程或觸發器始終只能在一個批處理中創建並編譯到一個執行計劃中。
用觸發器還可以強制執行業務規則
Microsoft® SQL Server64 2000 提供了兩種主要機制來強制業務規則和數據完整性:約束和觸發器。觸發器是一種特殊類型的存儲過程,它在指定的表中的數據發生變化時自動生效。喚醒調用觸發器以響應 INSERT、UPDATE 或 DELETE 語句。觸發器可以查詢其它表,並可以包含復雜的 Transact-SQL 語句。將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待。如果檢測到嚴重錯誤(例如,磁碟空間不足),則整個事務即自動回滾。
觸發器的優點如下:
觸發器可通過資料庫中的相關表實現級聯更改;不過,通過級聯引用完整性約束可以更有效地執行這些更改。
觸發器可以強制比用 CHECK 約束定義的約束更為復雜的約束。
與CHECK 約束不同,觸發器可以引用其它表中的列。例如,觸發器可以使用另一個表中的 SELECT 比較插入或更新的數據,以及執行其它操作,如修改數據或顯示用戶定義錯誤信息。
觸發器也可以評估數據修改前後的表狀態,並根據其差異採取對策。
一個表中的多個同類觸發器(INSERT、UPDATE 或 DELETE)允許採取多個不同的對策以響應同一個修改語句。
比較觸發器與約束
約束和觸發器在特殊情況下各有優勢。觸發器的主要好處在於它們可以包含使用 Transact-SQL 代碼的復雜處理邏輯。因此,觸發器可以支持約束的所有功能;但它在所給出的功能上並不總是最好的方法。
實體完整性總應在最低級別上通過索引進行強制,這些索引或是 PRIMARY KEY 和 UNIQUE 約束的一部分,或是在約束之外獨立創建的。假設功能可以滿足應用程序的功能需求,域完整性應通過 CHECK 約束進行強制,而引用完整性 (RI) 則應通過 FOREIGN KEY 約束進行強制。
在約束所支持的功能無法滿足應用程序的功能要求時,觸發器就極為有用。例如:
除非REFERENCES 子句定義了級聯引用操作,否則 FOREIGN KEY 約束只能以與另一列中的值完全匹配的值來驗證列值。
CHECK 約束只能根據邏輯表達式或同一表中的另一列來驗證列值。
③ sql視圖 存儲過程 觸發器各自的優點是什麼
視圖的優點:
提高數據安全性,可以不讓用戶看到表中的某個欄位。比如password,你只給他們執行視圖的許可權,不給執行表的許可權,他們就無法查看全部數據。
還有可以建立一個視圖,內容包括兩個表,更新的時候只需要指定ID,而不用管它來自哪個表,對應表中的數據就會自動更新。
存儲過程的優點:
包括視圖的所有優點,還可以讓不懂資料庫的人也能也用資料庫,還有就是方便程序計設,比如我負責前台程序設計,你負責寫存程,我不用管你是怎麼寫,最後只接調用,我們分工明確,我也不需要懂你所懂的,這為用不懂語言和不同專業的人在一起合作提供了良好的平台。提高開發效率。
觸發器的優點:
保證數據的正確性和邏輯,比如訂單表中新增一條數據,對應在庫存表中會減少一個產品一樣。
還有保證數據的安全性,比如當用戶刪除表A,我們可以判斷他是否為Admin組的用戶,如果不是,就會給出錯誤的提示,並將事務回滾。
我知道的就這么多了。。。嘿嘿。
④ 資料庫觸發器的優缺點以及用法
觸發器本質上講就是事件監控器,可以定義在資料庫系統進行某一個操作的前後。
當資料庫系統在進行特定的操作時,發現有觸發器定義,就去執行觸發器定義的功能,從而滿足某些特定的需要。
例如,在更新某些數據後,再去更新特定的數據。
這就可以定義一個觸發器完成這樣的需要。
觸發器的優點:
以事件方式來處理.
當數據發生變化的時候,
自動作處理。
缺點:
當資料庫之間
導出導入的時候,
可能會引起不必要的觸發邏輯。
⑤ SQL中觸發器有什麼作用
觸發器可以查詢其它表,而且可以包含復雜的 SQL 語句。它們主要用於強制復雜的業務規則或要求。例如,可以控制是否允許基於顧客的當前帳戶狀態插入定單。 觸發器還有助於強制引用完整性,以便在添加、更新或刪除表中的行時保留表之間已定義的關系。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。如果使用資料庫關系圖,則可以在表之間創建關系以自動創建外鍵約束。 觸發器的優點如下: 觸發器是自動的:它們在對表的數據作了任何修改(比如手工輸入或者應用程序採取的操作)之後立即被激活。觸發器可以通過資料庫中的相關表進行層疊更改。例如,可以在 titles 表的 title_id 列上寫入一個刪除觸發器,以使其它表中的各匹配行採取刪除操作。該觸發器用 title_id 列作為唯一鍵,在 titleauthor、sales 及 roysched 表中對各匹配行進行定位。觸發器可以強制限制,這些限制比用 CHECK 約束所定義的更復雜。與 CHECK 約束不同的是,觸發器可以引用其它表中的列。例如,觸發器可以回滾試圖對價格低於 10 美元的書(存儲在 titles 表中)應用折扣(存儲在 discounts 表中)的更新。
⑥ SQL里的觸發器的優缺點它的存貯速度和執行速度如何
觸發器的優點: 以事件方式來處理. 當數據發生變化的時候, 自動作處理.
缺點: 當資料庫之間 導出導入的時候, 可能會引起不必要的觸發邏輯.
存貯速度和執行速度: 代碼是存儲在伺服器上, 執行速度主要取決於 資料庫伺服器的性能與觸發器代碼的復雜程度。
⑦ sql視圖存儲過程觸發器各自的優點是什麼
視圖的優點:
提高數據安全性,可以不讓用戶看到表中的某個欄位。比如password,你只給他們執行視圖的許可權,不給執行表的許可權,他們就無法查看全部數據。
還有可以建立一個視圖,內容包括兩個表,更新的時候只需要指定ID,而不用管它來自哪個表,對應表中的數據就會自動更新。
存儲過程的優點:
包括視圖的所有優點,還可以讓不懂資料庫的人也能也用資料庫,還有就是方便程序計設,比如我負責前台程序設計,你負責寫存程,我不用管你是怎麼寫,最後只接調用,我們分工明確,我也不需要懂你所懂的,這為用不懂語言和不同專業的人在一起合作提供了良好的平台。提高開發效率。
觸發器的優點:
保證數據的正確性和邏輯,比如訂單表中新增一條數據,對應在庫存表中會減少一個產品一樣。
還有保證數據的安全性,比如當用戶刪除表A,我們可以判斷他是否為Admin組的用戶,如果不是,就會給出錯誤的提示,並將事務回滾。
我知道的就這么多了。。。嘿嘿。
⑧ sql中的觸發器該不該使用
該使用,很有用。例如當你刪除一個類別時,你要連同這個類別下的內容全部刪除,就可以使用觸發器。