SQL觸發器總結

2021-09-21 20:23:19 字數 2242 閱讀 3489

對於不可更新的檢視要進行更新時,可以用觸發器中的

instead of

進行更新

--建立乙個插入操作的觸發器:當向學生選課表sc中插入一條記錄後,變更在學生表student對應學生的選課門數。 

create

trigger

stu_in  

onsc

---對哪個表或者檢視進行操作

forinsert

--設定觸發條件,也就是在什麼情況下會觸發這個觸發器

asupdate

student  

setscnum = scnum +1  

from

student 

inner

join

sc  

onstudent.sno = sc.sno  

setstatistics

io on

setnocount 

oninsert

into

sc values

('990001'

,'001'

,'99'

)  delete

from

sc where

sno=

'990001'

andcno=

'001'

--建立update觸發器

create

trigger

stu_up  

onstudent  

forupdate

asif 

update

(sno)  

begin

raiserror(

'不能對sno欄位進行更新'

,10,1)  

rollback

transaction

endupdate

student  

setsno=

'990032'

where

sno=

'990001'

--建立delete觸發器

create

trigger

stu_del  

onstudent  

fordelete

asdelete

from

sc  

where

sc.sno in(

select

sno 

from

deleted)  

exec

sp_helptext stu_in

--檢視已經建立好的觸發器的建立語句

create

trigger

com_up  

oncomputer  

instead

ofupdate

--instead of主要用於對檢視進行更新

asif 

update

(sname)

------------------這個sname的值來自於輸入update語句中的set後面的條件值

begin

update

student  

setsname=inserted.sname  

from

student 

inner

join

inserted  

onstudent.sno=inserted.sno  

endelse

begin

update

sc  

setcno=inserted.cno,  

grade=inserted.grade  

from

sc inner

join

inserted  

onsc.sno=inserted.sno  

endupdate

computer  

setgrade=95  

where

sno=

'990028'

update

computer  

setsname=

'王曉曉'

-------------------與if update(sname)中的sname相對應

where

sno=

'990028'

select

* from

computer 

sql 觸發器 直接遞迴觸發器

create trigger dbo loving20000 on dbo s for delete asdeclare age int select age sage from deleted delete s where sage age delete from s where sname xq...

觸發器總結

觸發器總結 trigger是當特定的sql dml 語句,如insert update或者delete語句在特定的資料庫表上執行時,由資料庫自動啟用的過程。觸發器對於實現表中某個列值得高階變更審計等功能非常有用。1 觸發器執行的時機 觸發器可以在sql語句執行之前和之後啟用。觸發器根據dml語句影響...

sql 觸發器 儲存過程 觸發器(3 3)

1 what?什麼是觸發器 trigger 前兩篇介紹了儲存過程,儲存過程可以理解為sql語句集。那麼觸發器就是一種特殊的儲存過程,也就是一群特殊的sql語句集。特殊在哪?從上文得知,儲存過程是依賴名字才被呼叫的。不僅是儲存過程,我們常用的方法等,大部分也是先知道名字,才能去使用。就像吃飯採用訂外賣...