第七章 觸發器

2021-08-28 04:06:09 字數 3111 閱讀 6815

定義:觸發器是在對錶或檢視進行插入,更新或刪除操作時自動執行的儲存過程

作用及用處:

* 觸發器通常用於強制業務規則

* 觸發器是一種高階約束,可以定義比用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.函式的原型可以單獨放於乙個標頭檔案中,一定要具有...