触发器Word格式.docx
- 文档编号:15720856
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:14
- 大小:17.95KB
触发器Word格式.docx
《触发器Word格式.docx》由会员分享,可在线阅读,更多相关《触发器Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
createtabletable10--创建表table9
(c1int,
c2char(30))
createtriggertrig1ontable10--创建触发器
forinsert,update,delete
select*fromtable10
inserttable10values(1,'
林冲'
)
updatetable10setc2='
宋江'
wherec1=1
execsp_helptexttrig1--查看触发器内容
execsp_helptriggertable10--查看触发器的属性
execsp_dependstrigcopy1
createtriggertrig4ontable10
PRINT'
ABC'
---------------------------------
/*例15.3下例说明inserted表和deleted表的作用*/
deletetable10
ifexists(selectnamefromsysobjectswherename='
trig1'
andtype='
TR'
droptriggertrig1
createtriggertrig1
ontable10
afterinsert,update,delete
print'
inserted表'
select*frominserted
deleted表'
select*fromdeleted
setnocounton
inserttable10values(2,'
吴用'
关胜'
wherec1=2
deletetable10wherec1=2
/*创建触发器trig2用来检查插入或修改的c1的值是否在1-108之间:
createtabletable10
c2char(10))
createtriggertrig2
forinsert,update
declare@c1_1int
select@c1_1=c1frominserted
if@c1_1<
1or@c1_1>
108
begin
rollback
raiserror('
c1值必须在1到108之间!
'
16,1)
end
--select*frominserted
inserttable10values(200,'
武松'
select*fromtable10
inserttable10values(15,'
updatetable10setc1=300wherec2='
/*创建触发器trig3,当删除student表中的学生记录时,应该同时删除score表中对应的记录,
实现该功能的触发器如下:
createtriggertrig3
onstudent
fordelete
deletescore
wherescore.sno=(selectsnofromdeleted)
insertstudentvalues(200,'
陈功'
'
男'
1975-1-1'
95105'
insertscorevalues(200,'
3-105'
88)
6-166'
select*fromstudent
select*fromscore
/*execsp_helpscore--查看其中外键
altertablescore--删除外键
dropCONSTRAINTFK_score_course
altertablescore
dropCONSTRAINTFK_score_student*/
deletestudentwheresno=200
select*fromscore
/*例15.4建立一个触发器trigname,当向student表中插入数据时,
如果姓名不重复则插入数据
如果出现姓名重复的情况,则回滚该事务*/
useschool
createtriggertrigname3
insteadofinsert
as
declare@namechar(10)
select@name=inserted.snamefrominserted
ifexists(selectsnamefromstudentwheresname=@name)
raiserror('
姓名重复,不能插入'
16,1)--raiserror函数返回用户定义的错误信息,第一个参数指出错误消息,第二个参数指出错误消息的级别,的三个参数指出错误消息的状态。
rollback--回滚
else
begin
insertintostudentselectinserted.*frominserted
--执行以下插入语句,观察结果
insertintostudent(sno,sname,ssex)values(102,'
国丽'
女'
go
select*fromstudent
/*例15.5建立一个触发器trigsex,当向student表中插入数据时,
如果出现性别不正确的情况,不回滚该事务,只提示错误消息*/
createtriggertrigsex
afterinsert
declare@s1char
(1)
select@s1=ssexfrominserted
if@s1<
>
or@s1<
性别只能取男或女'
16,1)
--执行以下程序,观察结果
insertintostudent(sno,ssex)values('
M'
/*例15.6建立一个修改触发器trigno,
该触发器防止用户修改表student的学号*/
createtriggertrigno
afterupdate
ifupdate(sno)
不能修改学号'
16,2)
rollback
updatestudentsetsno='
2'
wheresno='
/*例15.7建立一个触发器trigcopy,
将student表中所有修改的数据及修改日期保存到studnet1表中作为历史记录*/
student1'
U'
droptablestudent1
createtablestudent11
(rqdatetime,--该字段放修改日期
snochar(5),
snamechar(10),
ssexchar
(2),
sbirthdaydatetime,
sclasschar(10))
/*createtriggertrigcopy
insertintostudent1(rq,sno,sname,ssex,sbirthday,sclass)
selectgetdate(),inserted.sno,inserted.sname,inserted.ssex,inserted.sbirthday,inserted.sclass
fromstudent,inserted
wherestudent.sno=inserted.sno
go*/
createtriggert2
insertintostudent11(rq,sno,sname,ssex,sbirthday,sclass)
selectgetdate(),inserted.*
frominserted
--修改班号
updatestudentsetclass='
95031'
whereclass='
96031'
select*fromstudent11
--恢复班号
updatestudentsetsclass='
wheresclass='
select*fromstudent1
/*例15.8建立一个删除触发器trigclass,
该触发器防止用户删除表student中所有95031班的学生记录。
createtriggertrigclass
after
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 触发器