對於不可更新的檢視要進行更新時,可以用觸發器中的
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語句集。特殊在哪?從上文得知,儲存過程是依賴名字才被呼叫的。不僅是儲存過程,我們常用的方法等,大部分也是先知道名字,才能去使用。就像吃飯採用訂外賣...