SQL触发器实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

--建立触发器,显示修改人数

create trigger d1 on jun for insert,update as

select '你正在修改数据'

declare @a varchar(20)

select @a=str(@@rowcount)+'个学生被修改'

select @a

select * from jun

return

insert into jun(爱好) values('跑步')

update jun set 爱好='打球' where 学号<='103'

--建立触发器,当男生人数在6个以内可以加入,否则不能加入

create trigger i1 on zg for insert as

if((select count(性别) from zg where 性别='男')>6)

select '不能插入,男生人数已满。'

else

select'插入成功'

select * from zg

insert into zg(学号,姓名,性别) values(20100636,'江渝','男')

--建立触发器,如果语文成绩在200以内可以修改,否则不能修改

create trigger u1 on zg for update as

if((select max(语文) from zg )>200)

begin

select '你不能修改'

rollback

end

else

select '修改成功'

select * from zg

update zg set 语文=语文+10 where 姓名='唐荣强'

update zg set 语文=语文-20 where 姓名='张军'

update zg set 语文=语文+30 where 姓名='张军'

--建立触发器,显示删除和修改的内容

create trigger d2 on zg for insert,update,delete as

select * from deleted

select * from inserted

select * from zg

delete from zg where 班级=Null

delete from zg where 姓名='张军'

--建立触发器,如果zg表中没有此人的姓名,则不能在kc表中进行修改

create trigger i2 on kc for insert,update as

if(not exists(select 姓名from zg where 姓名=(select 姓名from inserted))) begin

select '不能修改数据'

rollback

select * from kc

end

else

begin

select '修改成功'

select * from kc

end

update kc set 选修人数=选修人数+100 where 姓名='张军'

--建立触发器,更行zg时也更新kc

create trigger u2 on zg for update as

select * from deleted

select * from inserted

update kc set 姓名=(select min(姓名) from inserted )where 姓名=(select min(姓名) from deleted)

select * from zg

select * from kc

update zg set 姓名='张晓军' where 姓名='张军'

--建立触发器,如果加入的数>2000就不能插入并将默认值为500

create trigger i3 on zg for insert as

if((select 语文from inserted)>2000)

begin

select '语文>2000不合适'

update zg set 语文=500

select * from zg

rollback

end

else

select '修改成功'

insert into zg(班级,姓名,学号,语文) values('小数','王五',20100637,2500)

--建立触发器,不能删除总成绩最高的人

create trigger d3 on zg for delete as

if( select 总成绩from deleted) >= ( select max(总成绩)from zg)

begin

select '删除的数为:'

select * from deleted

select '不能删除成绩最高的一位'

rollback

end

else

select '删除成功'

select * from zg

delete from zg where 姓名='唐荣强'

--建立触发器,英语增长不超过250%

create trigger u3 on zg for update as

if(select max(英语) from inserted )/(select min(英语) from deleted)>2.5

相关文档
最新文档