1樓:大野瘦子
建立觸發器 是特殊的儲存過程,自動執行,一般不要有返回值。
1、後觸發器 (after,for)先執行對應語句,後執行觸發器中的語句。
2、前觸發器 並沒有真正的執行觸發語句(insert,update,delete),而是執行觸發後的語句。
3、行級觸發器 (for each row) 在sql server 中不存在。
2樓:我愛瓜瓜啊
先給你舉個觸發器的例項:
先建立兩個表
create table student( --學生表
studentid int primary key, --學號
....
) create table borrowrecord( --學生借書記錄表
borrowrecord int identity(1,1), --流水號
studentid int , --學號
borrowdate datetime, --借出時間
returndate datetime, --歸還時間
...) 建立觸發器
create trigger trustudent
on student --在student表中建立觸發器
for update --為什麼事件觸發,在這裡就是修改的時候會執行這個觸發器,一旦你修改student表,就會執行
as --事件觸發後所要做的事情
if update(studentid)
begin
update borrowrecord
set studentid=i.studentid
from borrowrecord br , deleted d ,inserted i --deleted和inserted臨時表
where br.studentid=d.studentidend
3樓:匿名使用者
根據你觸發器建立的定義。
在 insert update delete 資料的時候, 自動觸發執行。
sql觸發器如何使用
4樓:長映諫瑩
在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觸發器。
sql中的「觸發器」是什麼?
5樓:老夭來了
觸發器是對錶進行插入、更新、刪除的時候會自動執行的特殊儲存過程。
觸發器一般用在check約束更加複雜的約束上面。例如在執行update、insert、delete這些操作的時候,系統會自動呼叫執行該錶上對應的觸發器。
sql server 2005中觸發器可以分為兩類:dml觸發器和ddl觸發器,其中ddl觸發器它們會影響多種資料定義語言語句而激發,這些語句有create、alter、drop語句。
dml觸發器分為:
1、 after觸發器(之後觸發)
a、 insert觸發器
b、 update觸發器
c、 delete觸發器
2、 instead of 觸發器 (之前觸發)
其中after觸發器要求只有執行某一操作insert、update、delete之後觸發器才被觸發,且只能定義在表上。而instead of觸發器表示並不執行其定義的操作(insert、update、delete)而僅是執行觸發器本身。既可以在表上定義instead of觸發器,也可以在檢視上定義。
觸發器有兩個特殊的表:插入表(instered表)和刪除表(deleted表)。這兩張是邏輯表也是虛表。
有系統在記憶體中建立者兩張表,不會儲存在資料庫中。而且兩張表的都是唯讀的,只能讀取資料而不能修改資料。這兩張表的結果總是與被改觸發器應用的表的結構相同。
當觸發器完成工作後,這兩張表就會被刪除。inserted表的資料是插入或是修改後的資料,而deleted表的資料是更新前的或是刪除的資料。
update資料的時候就是先刪除表記錄,然後增加一條記錄。這樣在inserted和deleted表就都有update後的資料記錄了。注意的是:
觸發器本身就是乙個事務,所以在觸發器裡面可以對修改資料進行一些特殊的檢查。如果不滿足可以利用事務回滾,撤銷操作。
6樓:盤痴柏錢州
觸發器就是在更新資料時,讓資料庫完成額外的操作。
觸發器有三種觸發方式,在插入新資料時,在修改資料時,在刪除資料時。
最簡單的說法就是當你想往表a中插入資料的同時想表b的字段資料隨錶a的相同字段變化,就用到觸發器
怎樣sql儲存過程中執行動態sql語句
有時需要在oracle 儲存過程中執行動態sql 語句 例如表名是動態的,或字段是動態的,或查詢命令是動態的,可用下面的方法 set serveroutput ondeclaren number sql stmt varchar2 50 t varchar2 20 beginexecute imme...
數位電路觸發器時序圖問題,數字邏輯中觸發器畫電路的狀態響應時序圖什麼時候從下簷開始畫什麼時候要從上簷開
如果觸發脈衝下降沿出現的同時,a也正好出現由 1 0的變化時,那麼內 a的取值是 a 0 可以這樣 容來理解,輸入門限在電源的一半,即vc 2,vc 2為高電平,當cp 數字邏輯中觸發器畫電路的狀態響應時序圖什麼時候從下簷開始畫什麼時候要從上簷開 放倒了。從上沿開始還是從下沿開始,具體要看觸發器的種...
資料庫中觸發器是什麼 資料庫觸發器有什麼作用?
資料庫觸發器有什麼作用?觸發器的作用 自動計算資料值,如果資料的值達到了一定的要求,則進行特定的處理。同步實時地複製表中的資料。實現複雜的非標準的資料庫相關完整性規則。可在寫入資料表前,強制檢驗或轉換資料。觸發器發生錯誤時,異動的結果會被撤銷。部分資料庫管理系統可以針對資料定義語言 ddl 使用觸發...