--建立觸發器
--觸發器 保證資料完整性,與表事件相關的特殊的儲存過程,由事件觸發
--比如當對乙個表進行操作時(alter,delete,update)
delete student
where sno=
'1201011102'
select
*from student
where sno=
'1201011102'
--插入一條新記錄
insert
into student
(sno,sname,s***,entrancetime,classno)
values
('11099'
,'字串'
,'男'
,'2000-01-01'
,'11010111'
)--查詢插入的新記錄
select
*from student
where sno=
'11099'
--如果要真的刪除,需要禁用表裡面的delete_student觸發器
delete student
where sno=
'11099'
alter
trigger
[dbo]
.[update_sname]
on[dbo]
.[student]
forupdate
--instead of update
asif
update
(sname)
begin
print
'不能修改學生的姓名'
rollback
transaction
endelse
ifupdate
(s***)
begin
print
'不能修改學生的性別'
rollback
transaction
--撤銷操作
end--測試**,檢查觸發器功能是否正常
update student
set sname =
'zfc'
where sno=
'1101011101'
update student
set s*** =
'm'where sno=
'1101011101'
select
*from student
where sno=
'1101011101'
--建立乙個觸發器,針對於teacher表,如果有人要修改教師的姓名,就輸出不能修改教師姓名
create
trigger t_updatename
on teacher --對teacher表起作用
forupdate
--觸發條件,insert,delete
asif
update
(tname)
begin
print
'不能修改教師姓名'
rollback
tran
--事物回滾
end--測試**,驗證觸發器是否有效
update teacher
set tname=
'字串'
where tno=
'0101'
select
*from teacher
where tno=
'0101'
--alter
trigger t_insert
on teacher
forinsert
as--兩張特殊的表,inserted ,deleted(隱藏),記錄剛剛插入或者刪除的記錄
declare
@tno
char(4
)--定義的區域性變數用來儲存從系統表中查出的教師的工號
select
@tno
=tno
from inserted
print
@tno
ifleft
(@tno,2
)!='11'
print
'不能插入該記錄'
rollback
tran
--測試觸發器語句
insert
into teacher
(tno,tname,ttitle)
values
('0997'
,'zifuchuan'
,'教授'
)
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...
150801課堂筆記 觸發器(未完)
2015.08.01 memo 觸發器 建立產品表 create table products id number 11 primary key,name varchar2 30 not null,price number 6,2 建立倉庫表 create table store id number...
sql 觸發器 儲存過程 觸發器(3 3)
1 what?什麼是觸發器 trigger 前兩篇介紹了儲存過程,儲存過程可以理解為sql語句集。那麼觸發器就是一種特殊的儲存過程,也就是一群特殊的sql語句集。特殊在哪?從上文得知,儲存過程是依賴名字才被呼叫的。不僅是儲存過程,我們常用的方法等,大部分也是先知道名字,才能去使用。就像吃飯採用訂外賣...