1樓:長映諫瑩
在sql中,觸發器是一種特殊型別的儲存過程,它不同於sql的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如update、
insert、
delete
這些操作時,sql
server
就會自動執行觸發器所定義的sql
語句,從而確保對資料的處理必須符合由這些sql
語句所定義的規則。
觸發器的主要作用就是其能夠實現由主鍵和外來鍵所不能保證的複雜的參照完整性和資料的一致性。除此之外,觸發器還有其它許多不同的功能:
(1)強化約束(enforce
restriction)
觸發器能夠實現比check
語句更為複雜的約束。
(2)跟蹤變化(auditing
changes)
觸發器可以偵測資料庫內的操作,從而不允許資料庫中未經許可的指定更新和變化。
(3)級聯執行(cascaded
operation)。
觸發器可以偵測資料庫內的操作,並自動地級聯影響整個資料庫的各項內容。例如,某個表上的觸發器中包含有對另外一個表的資料操作(如刪除,更新,插入)而該操作又導致該表上觸發器被觸發。
(4)儲存過程的呼叫(stored
procedure
invocation)。
為了響應資料庫更新觸,發器可以呼叫一個或多個儲存過程,甚至可以通過外部過程的呼叫而在dbms(
資料庫管理系統)本身之外進行操作。
由此可見,觸發器可以解決高階形式的業務規則或複雜行為限制以及實現定製記錄等一些方面的問題。例如,觸發器能夠找出某一表在資料修改前後狀態發生的差異,並根據這種差異執行一定的處理。此外一個表的同一型別(insert、
update、
delete)的多個觸發器能夠對同一種資料操作採取多種不同的處理。
總體而言,觸發器效能通常比較低。當執行觸發器時,系統處理的大部分時間花費在參照其它表的這一處理上,因為這些表既不在記憶體中也不在資料庫裝置上,而刪除表和插入表總是位於記憶體中。可見觸發器所參照的其它表的位置決定了操作要花費的時間長短。
觸發器的種類
sqlserver
2000
支援兩種型別的觸發器:after
觸發器和instead
of觸發器。其中after
觸發器即為sql
server
2000
版本以前所介紹的觸發器。該型別觸發器要求只有執行某一操作(insert
update
delete)
之後,觸發器才被觸發,且只能在表上定義。可以為針對表的同一操作定義多個觸發器。對於after
觸發器,可以定義哪一個觸發器被最先觸發,哪一個被最後觸發,通常使用系統過程sp_settriggerorder
來完成此任務。
instead
of觸發器表示並不執行其所定義的操作(insert、
update、
delete),而僅是執行觸發器本身。既可在表上定義instead
of觸發器,也可以在檢視上定義instead
of觸發器,但對同一操作只能定義一個instead
of觸發器。
2樓:輝秀英狄亥
sql觸發器如何使用?比如我匯入資料進入某個表,會觸發另一個表的資料根據我設定的sql語句進行變動
假如《某個表
asa >《我設定的sql語句進行變動》asb進行update
b的欄位
bb上加1
b的主鍵
aacreate
trigger
tr_a_insert
ondbo.a
forinsert
asbegin
update
bset
b.bb
=b.bb+1
fromb,
inserted
where
b.aa
= inserted
.aaend
SQL怎麼寫觸發器,SQL資料庫中的觸發器怎麼寫啊?急
此題唯一的難度是使用者名稱 假設使用者名稱已儲存在表currentuser中 給出插入操作的觸發器建立 其他類似 create trriger mytr1 on a for insert asdeclare username varchar 20 select username username f...
SQL裡中儲存過程和觸發器,如何建立
儲存過程可以直接用sql語句建立,觸發器可以在表修改中建立create procedure nameas 1 儲存過程 create procedure for select 你想用的觸發器名字 delare name char 8 output 用於輸出的 age intoutput 用於輸出 p...
觸發器的使用是否方便的思考,觸發器的應用和用法?
觸發器使用最多的地方就是維護資料的完整性,的確,它能實現的東西,在 裡大部份都能實現,但是如果涉及到多使用者同時操作的話,在程式裡寫 當然比不上在觸發器裡寫 來的方便。就拿安全庫存來說吧,比如現在有2個使用者同時需要出同一種產品,當前庫存為100,a使用者需要80,b使用者需要50 在這之前他們所知...