触发器Word格式.docx

上传人:b****5 文档编号:15720856 上传时间:2022-11-15 格式:DOCX 页数:14 大小:17.95KB
下载 相关 举报
触发器Word格式.docx_第1页
第1页 / 共14页
触发器Word格式.docx_第2页
第2页 / 共14页
触发器Word格式.docx_第3页
第3页 / 共14页
触发器Word格式.docx_第4页
第4页 / 共14页
触发器Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

触发器Word格式.docx

《触发器Word格式.docx》由会员分享,可在线阅读,更多相关《触发器Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

触发器Word格式.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1