实验6 触发器的使用

实验6 触发器的使用

  • 实验目的  
  • 掌握触发器的创建、修改和删除操作。
  • 掌握触发器的触发执行。
  • 掌握触发器与约束的不同。

 二、实验要求 1.创建触发器。 2.触发器执行触发器。 3.验证约束与触发器的不同作用期。 4.删除新创建的触发器。

三、实验内容

(一)示例 1.创建触发器 ①启动SQL Server 查询编辑器,选择要操作数据库,如“学生_课程”数据库。 ②在查询命令窗口中输入以下CREATE TRIGGER语句,创建一个针对Student表的触发器,打印共修改了多少行数据。 –创建触发器 create trigger tr_student_update on Student for update as declare @msg varchar(100) select @msg=str( @@rowcount )+’ Student updated by this statement’ print @msg return go

create trigger tr_student_update

on Student

for update

as declare @msg varchar(100)

select msg =str(@@rowcount) +

'Student updated by this statement'

print @msg

return

go

③点击快捷工具栏上的快捷按钮,完成触发器的创建。

  1. 触发触发器 ①在查询命令窗口中输入以下UPDATE语句,修改年龄列,激发触发器。 update Student set Sage=Sage+1 ②观察执行结果,并记录下来。

update Student

set Sage = Sage +1

  1. 删除新创建的触发器 ①在查询命令窗口中输入DROP TRIGGER 语句,删除新创建的触发器。 DROP TRIGGER tr_student_update ②点击快捷工具栏上的快捷按钮,删除触发器。
  2. drop trigger tr_student_update

创建一个触发器,实现对学生信息的级联删除,即删除student表中的某名学生后自动删除SC表中该生的选课记录信息。

create trigger tri_student_delete

ON Student

after delete

as

begin

    declare @num int

    set @num = @@rowcount

    if @num=0

    begin

        print '没有删除记录'

        return

    END

    if @num>1

    begin

        rollback transaction

        raiserror('您只能删除一条记录',16,10)

        return

    end

    declare @sno char(10)

    select @sno = sno

    from Deleted

    delete sc where sno=@sno

    print '级联删除成功'

end

(二)思考题 1.在Student表中编写insert的触发器,假如每个班的学生不能超过30个,如果低于此数,添加可以完成;如果超过此数,则插入将不能实现。

create trigger tr_student_insert

on Student

for insert,update

as

declare @sno numeric

select @sno=sno from Student

if(@sno>30)

begin

print '插入不成功'

rollback

end

else

print'插入成功'

2.在SC表上编写update触发器,当修改SC表中的grade字段时将其修改前后的信息保存在SC_log表中。

create trigger tr_sc_update

on SC

for update

as

if update(grade)

insert into SC_log select* from deleted

insert into SC_log select* from inserted

四、实验报告要求 1、写出与上述任务相对应的SQL语句 2、并记录在实验过程中遇到的问题、解决办法及心得体会。

 

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值