第19讲++触发器

为xs_kc表创建一个名为t1的insert触发器,当向xs_kc表进行插入操作时激发该触发器,并给出提示信息“有新成绩信息插入到xs_kc表中!”。

create    trigger    t1
     on   xs_kc      for   insert
     as    print   ‘有新成绩信息插入到xs_kc表中! ’
go
insert     xs_kc    values( '2012130101', '111', 87, null )

要在xscj库的xsqk表中插入下面所示的2条信息,如果在该表上未创建触发器,则可成功插入到xsqk表中。但我们希望插入的信息必须是“计算机应用” 系,否则就撤消刚才的插入,并返回错误信息。用触发器实现该约束

use xscj
insert  xsqk
values('2012140101', '陈希', 1, '1995-8-12', '环境艺术', '传媒')
insert  xsqk
values('2012130110', '黄倩', 0, '1996-1-1', '信息安全', '计算机应用')

为xsqk表创建一个名为t3的delete触发器,当要删除信息安全专业学生的数据行时,激发该触发器,撤销删除操作,并给出提示信息“不能删除信息安全专业的学生信息!”,否则给出提示信息“删除成功!”

create  trigger  t3
on  xsqk
for  delete
as
   if(select  专业名  from  deleted)=‘信息安全’
     begin   
       rollback transaction
       print ‘不能删除信息安全专业的学生信息!’
     end
   else
     print ‘删除成功!’
go
delete   xsqk    where    专业名= ‘信息安全’

为xsqk表创建一个update触发器,当更新了某位学生的学号信息时,就用触发器级联更新xs_kc表中相关的学号信息。

create  trigger  t4
on  xsqk
for  update 
as
declare  @old  char(10), @new  char(10)
select  @old=deleted.学号, @new=inserted.学号
from  deleted, inserted
where  deleted.姓名=inserted.姓名
print  '准备级联更新xs_kc表中的学号信息…'
update  xs_kc
set  学号=@new
where  学号=@old
print  '已经级联更新xs_kc表中原学号为'+@old +'的信息!'

 

posted @ 2017-05-19 18:39  该☆隐  阅读(433)  评论(0编辑  收藏  举报