當前位置:成語大全網 - 新華字典 - 什麽時候使用觸發器?有什麽作用?舉個簡單的例子來說明。

什麽時候使用觸發器?有什麽作用?舉個簡單的例子來說明。

觸發器是壹種特殊的存儲過程。它的執行不是由程序調用或手動啟動,而是由事件觸發。例如,當壹個表被操作(插入、刪除、更新)時,它的執行將被激活。觸發器通常用於實施數據完整性約束和業務規則。觸發器可以在DBA_TRIGGERS和USER_TRIGGERS數據字典中找到。數據庫領域名詞觸發器可以查詢其他表並包含復雜的SQL語句。它們主要用於強制遵守復雜的業務規則或需求。例如,您可以根據客戶的當前帳戶狀態控制是否允許插入新訂單。

觸發器也可用於實施參照完整性,以便在多個表中添加、更新或刪除行時,保留這些表之間定義的關系。但是,實施參照完整性的最佳方式是在相關表中定義主鍵和外鍵約束。如果使用數據庫圖表,可以在表之間創建關系,以自動創建外鍵約束。

用於創建觸發器的SQL語法

分隔符|

創建觸發器“& ltdatabaseName & gt` .` & lttriggerName & gt`

& lt[之前|之後]& gt;& lt[插入|更新|刪除]& gt;

ON & lttableName & gt

對於每壹行

開始

-做點什麽

結束|

觸發器的優點

觸發器可以通過數據庫中的相關表實現級聯變化;但是,通過級聯引用完整性約束可以更有效地實現這些更改。觸發器可以實施比用CHECK約束定義的約束更復雜的約束。與CHECK約束不同,觸發器可以引用其他表中的列。例如,觸發器可以使用另壹個表中的SELECT來比較插入或更新的數據,並執行其他操作,如修改數據或顯示用戶定義的錯誤消息。觸發器還可以評估數據修改前後的表狀態,並根據它們的差異采取對策。表中相同類型的多個觸發器(INSERT、UPDATE或DELETE)允許采取多種不同的對策來響應相同的修改語句。

比較觸發器和約束

約束和觸發器在特殊情況下各有優勢。觸發器的主要優點是它們可以包含使用Transact-SQL代碼的復雜處理邏輯。因此,觸發器可以支持約束的所有功能;但是在給定的函數中,它並不總是最好的方法。實體完整性應始終通過索引在最低級別強制實施,索引要麽是主鍵和唯壹約束的壹部分,要麽是獨立於約束創建的。假設函數可以滿足應用程序的功能需求,域完整性應該通過檢查約束來實施,引用完整性(RI)應該通過外鍵約束來實施。當約束支持的函數不能滿足應用程序的功能需求時,觸發器非常有用。

例如,除非REFERENCES子句定義了級聯引用操作,否則FOREIGN KEY約束只能使用與另壹列中的值完全匹配的值來驗證列值。

CHECK約束只能根據邏輯表達式或同壹表中的另壹列來驗證列值。如果應用程序要求根據另壹個表中的列來驗證列值,則必須使用觸發器。

約束只能通過標準系統錯誤信息傳遞錯誤信息。如果您的應用程序需要自定義信息和更復雜的錯誤處理(或者可以從中受益),您必須使用觸發器。

觸發器可以通過數據庫中的相關表實現級聯變化;但是,通過級聯引用完整性約束可以更有效地實現這些更改。

觸發器可以禁止或回滾違反參照完整性的更改,從而取消嘗試的數據修改。當外鍵被更改並且新值與主鍵不匹配時,這種類型的觸發器可能會起作用。例如,您可以在titleauthor.title_id上創建插入觸發器,以便在新值與titles.title_id中的值不匹配時回滾插入。但是,通常使用外鍵來實現這壹目標。

如果觸發器表上存在約束,則在INSTEAD OF觸發器執行之後但在觸發器執行之後檢查它們。如果約束被破壞,INSTEAD OF觸發器操作將被回滾,並且不會執行AFTER觸發器。

可以在SQL Server中的視圖上創建觸發器嗎?6?4在聯機叢書中,並沒有說不能在視圖上創建觸發器,在語法解釋中指出:

在CREATE觸發器打開後,它可以是壹個視圖。然而,事實似乎並非如此,許多專家也認為不能在視圖上創建觸發器。我還專門做了壹個測試,是真的。普通視圖和索引視圖都不能在其上創建觸發器。這是真的嗎?詳情請點擊,但在臨時表或系統表上創建觸發器時會被拒絕也是可以理解的。深入理解FOR CREATE TRIGGER語句的FOR關鍵字後,可以遵循INSERT、UPDATE和DELETE中的壹個或多個,這意味著在其他情況下不會觸發觸發器,包括SELECT、TRUNCATE、WRITETEXT和UPDATETEXT。壹個有趣的應用:我們看到很多註冊系統在註冊後不能更改用戶名,但這大多是由應用決定的。如果直接打開數據庫表進行更改,也可以更改他們的用戶名,並且可以熟練地認識到不能通過使用觸發器中的rollback來更改自己的用戶名...當詳細內容觸發器的內部語句出錯時...在這種情況下,之前的數據更改操作將無效。例如,當數據插入到表中時觸發觸發器,此時觸發器內部出現運行時錯誤,那麽將返回壹個錯誤值,剛才的數據插入將被拒絕。不能在觸發器中使用的語句大多數T-SQL語句都可以在觸發器中使用,但下列語句不能在觸發器中使用。

創建語句,如:創建數據庫、創建表、創建索引等。

ALTER語句,如ALTER DATABASE、ALTER TABLE、ALTER INDEX等。

DROP語句,如:DROP DATABASE、DROP TABLE、DROP INDEX等。

磁盤語句,如DISK INIT和DISK RESIZE。

LOAD語句,如:LOAD DATABASE,LOAD LOG。

RESTORE語句,如:RESTORE DATABASE,RESTORE LOG。

改裝

在sybase觸發器中不能使用TRUNCATE TABLE語句!

小心使用觸發器。觸發器功能強大,很多復雜的功能都可以輕松可靠的實現。為什麽要謹慎使用它們?觸發器本身沒有問題,但是我們的濫用會造成數據庫和應用的維護困難。在數據庫操作中,我們可以通過關系、觸發器、存儲過程、應用程序等來實現數據操作...同時,規則、約束和默認值也是保證數據完整性的重要保證。如果過分依賴觸發器,必然會影響數據庫的結構,同時增加復雜的維護程序。【編輯本段】數字電路領域的專業名稱是“雙穩態多諧振蕩器”。觸發器是壹種可以存儲電路狀態的電子元件。最簡單的是壹個RS觸發器,由兩個NOR門、兩個輸入和兩個輸出組成(見圖)。比較復雜的是壹個D觸發器,有壹個時鐘(CLK)段和壹個D(數據)端,在CLK端為高時跟隨D端狀態,在CLK端變低的瞬間鎖存信號。比較常用的是由兩個簡單的D觸發器級聯而成,在時鐘底部鎖存信號的edge D觸發器,廣泛應用於計數器、運算器、存儲器等電子元器件中。

觸發器的電路結構和邏輯功能;

邏輯函數是指穩態時觸發器的二級狀態和當前狀態與輸入信號之間的邏輯關系。這種邏輯關系可以用特征表、特征方程或狀態轉移圖給出。

根據邏輯功能的不同特點,觸發器分為RS、JK、T、D等。

電路結構是指電路中門電路的類型和組合。

基本RS觸發器、同步RS觸發器、主從觸發器和邊沿觸發器是指不同形式的電路結構。由於電路結構的不同,帶來了不同的動作特性。

具有相同邏輯功能的觸發器可以通過不同的電路結構來實現。相反,具有不同邏輯功能的觸發器可以用相同的電路結構制成。

觸發器類型:

根據邏輯功能的不同,可分為RS觸發器、D觸發器、JK觸發器和T觸發器。

根據觸發方式的不同,可分為電平觸發、邊沿觸發和主從觸發。

根據電路結構的不同,可分為基本RS觸發器和鐘控觸發器。

根據存儲數據的原理,可以分為靜態觸發和動態觸發。

根據觸發器的基本組成,分為雙極觸發器和MOS觸發器。

照明配件

有許多類型的高強度氣體放電燈。因為高強度氣體放電燈需要高電壓來將氣體電離成等離子體,所以需要高電壓發生器作為啟動器。這是導火索。早期的機械觸發器已被淘汰。目前大多數觸發器都是采用可控矽或高壓觸發二極管的電子觸發器。常用的型號有:歐司朗的CD-7,飛利浦的Si565438艾倫的0SN58,ALK400等。