SQL Server 触发器实验

-- 2.为student表创建一个名为t1的insert触发器,当向表进行插入操作时激发该触发器,
-- 并给出提示信息“有新成绩信息插入到student表中!”。
create trigger t1
on student for insert
as print '有新成绩信息插入到student表中!'
insert into student(sno,sname) values ('001','张')



/* 
3.. 要在educ库的Student表中插入下面所示的信息,如果在该表上未创建触发器,
则可成功插入到表中。但我们希望插入的信息必须是“is” 系,否则就撤消刚才的插入,并返回错误信息。用触发器实现该约束.
请思考:该题中参考了哪些表?为什么能从临时表中提取更新前后的学号值?
*/
create trigger t2
on student for insert
as declare @dept char(20)
select @dept = sdept from inserted
if @dept != 'is' begin
rollback transaction
raiserror ('只能插入is系的学生的信息',16,10) end
insert into student (sno,sname,sdept) values('00112','996','is') 
/* 
该题涉及了student表和inserted临时表。因为要考虑后面的if语句是否成立,如果不成立,则会把插入到临时表中的信息消除\回滚
成为插入前的原始表信息。如果没有if语句中的rollback语句,则所有语句执行完成之后,inserted临时表中新插入的信息就会
提交给student表,实现物理上的插入。
*/



-- 4. 为Student表创建一个名为t5的update触发器,当对该表的“姓名”列修改时激发该触发器,使用户不能修改“姓名”列。
create trigger t5
on student for update 
as if update(sname) begin
rollback transaction raiserror ('不能修改”姓名“列',16,10) end

update student 
set sname = '999' where sno = '996'
-- 5. 体会并回答触发器的作用。
exec sp_helptrigger 'student'
/*
触发器可以理解为一个开关\限制,给某一个操作设置触发器,对于允许被操作的行为可以没有任何提示,或者对于不用允许操作的
行为首先禁止操作,之后可以输出提示语句,告知操作者语句执行错误的原因。
*/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值