定義:觸發器是在對錶或檢視進行插入,更新或刪除操作時自動執行的儲存過程
作用及用處:
* 觸發器通常用於強制業務規則
* 觸發器是一種高階約束,可以定義比用check約束更為複雜的約束
*觸發器定義在特定的表或檢視上,與表或檢視相關
*自動出發執行
*不能直接呼叫
*是乙個事物(可回滾)
型別:1. after觸發器(只能定義在表上)
after觸發器又包括:insert觸發器 update觸發器 delete觸發器
2.instead of觸發器(可以定義在表或檢視上)
建立觸發器語法:
--建立觸發器的語法
--create trigger 觸發器名稱
--on 需要監測的表名
--[with encryption]加密
--for/instead of(觸發器的型別 for是after觸發器)insert delete update
--as
--sql語句 go
刪除語法:
if exists (select * from sys.triggers where name ='觸發器名稱')
drop trigger '觸發器名稱'go
例:--禁止新增性別為男的同學
create trigger tr_insert
on stuinfo
for insert
asdeclare @*** varchar(2)
select @***=stu*** from inserted--這裡使用inserted表
if @***='男'
rollback tran
goinsert into stuinfo values('孫悟空','女')
select * from stuinfogo
--禁止刪除性別為女的同學
if exists (select * from sys.triggers where name ='tr_delete')
drop trigger tr_delete
gocreate trigger tr_delete
on stuinfo
for delete
asdeclare @*** varchar(2)
select @***= stu*** from deleted
begin
if @*** ='女'
rollback tran
end
godelete from stuinfo where stu***='女'
select * from stuinfogo
--禁止修改某一列(使用update語句)
asif update(stu***)--update(列名)
begin
print '性別不允許修改!!!'
rollback tran--回滾
endgo
update stuinfo set stu***='女'
select * from stuinfogo
--替代觸發器
if exists (select * from sys.triggers where name ='tr_instead')
drop trigger tr_instead
gocreate trigger tr_instead
on stuinfo
instead of delete
asdeclare @id int
select @id=stuid from deleted
delete from stumarks where
stuid=@id
delete from stuinfo where
stuid=@idgo
delete from stuinfo where stuid=2
select * from stuinfogo
--定義在檢視上
1.建立檢視
if exists (select * from sys.views where name ='v_delete')
drop view v_delete
gocreate view v_delete
asselect stuinfo.stuid,stuname,subject,score from stuinfo,stumarks where stuinfo.stuid=stumarks.stuid
goselect *from v_deletego
2.建立觸發器
if exists (select * from sys.triggers where name ='tr_instead')
drop trigger tr_instead
gocreate trigger tr_instead
on v_delete
instead of delete
asdeclare @id int
select @id=stuid from v_delete
delete from stumarks where
stuid=@id
delete from stuinfo where
stuid=@idgo
delete from stumarks where stuid=2
select * from stumarksgo
SQL第七章(觸發器)
1 觸發器是對錶進行插入 更新 或者刪除的時候會自動執行的特殊儲存過程 after觸發器 1 inster觸發器 2 update觸發器 3 delete觸發器 instead of 觸發器 created trigger 觸發器名 on 表名 for update ast sql語句 阻止插入性別...
python第七章 python教程(第七章)
字典和集合 字典是python中唯一,乙個對映型別 如何建立乙個字典,如下 dict dict 滲透 網路安全 怎麼理解字典呢?現實生活中的字典可以通過首字母進行查詢要查詢的漢子,python也可以這樣理解,通過 前的元素查詢到冒號後的元素。為什麼說字典是唯一乙個對映型別呢?看圖。對映型別區別與序列...
第七章 函式
1.ansi c 允許函式原型的使用,函式宣告提供給編譯器和之後的呼叫函式返回值型別,引數型別和數量的資訊,而k c用單獨的列表給出引數的型別,編譯器只記住函式的返回值型別,但不儲存函式的引數數量和型別 2.沒有return語句的函式,隱式的返回 3.函式的原型可以單獨放於乙個標頭檔案中,一定要具有...