触发器——————数据库(SQL)

 

create trigger tri_name
on table_name
[for insert/update/delete ]
/ [instead of insert/update/delete ]
 as
    语句
 
alter trigger tri_insert
on course for insert
as
declare @name nchar(5)
select @name=coursename from inserted
print ' 名称 ' + @name+' 已被加入表! '
 
insert course
values ('007',' 计算机英语 ' , '004' )
 
create trigger tri_delname
on course for delete
as
declare @name nchar(10)
select @name=coursename from deleted
print ' 名称 ' + @name+' 已被删除出表! '
 
delete from course
where course_id='006'
 
create trigger tri_upname
on course for update
as
declare @oldname nchar(10)
declare @newname nchar(10)
select @oldname=coursename from deleted
select @newname=coursename from inserted
print ' 名称 ' + @oldname+' 已被更新为 ' + @newname
 
update course
set coursename=' 计算机管理 '
where course_id='007'
 
alter trigger tri_inname
on course instead of insert
as
print ' 名称 ' + @name+' 未被加入表! '
 
insert into course
values ( '006' , ' 信息管理 ' , '002' )
 
create trigger tri_upsc
on sc for update
 as
   declare @sid nchar(10)
   declare @cid nchar(10)
   declare @oldscore int
   declare @newscore int
   select @sid=student_id,@cid=course_id,@oldscore=score
   from deleted
   select @newscore=score from inserted
print ' ' + convert ( nvarchar ( 30),getdate())+
      @sid+' ' + @cid+' 课程成绩由 ' +
       convert(nvarchar(3),@oldscore)+
      ' 改变为 ' + convert(nvarchar(3),@newscore)
 
update sc
set score=60
where student_id='002' and course_id='003'
 
create trigger tri_insname
on teacher for insert
as
 declare @name nchar(10)
 select @name=tname from inserted
 print ' 教师 ' + @name+' 插入到教师表中! '
create trigger tri_delname
on teacher for delete
as
   declare @name nchar(10)
 select @name=tname from deleted
 print ' 教师 ' + @name+' 从教师表中删除了! '
create trigger tri_upname
on teacher for update
as
   declare @oldname nchar(10),@newname nchar(10)
 select @oldname=tname from deleted
 select @newname=tname from inserted
 print ' 教师 ' + @oldname+' 改名为 ' + @newname
 
create trigger tri_upsc
on sc for update
 as
   declare @sid nchar(10)
   declare @cid nchar(10)
   declare @oldscore int
   declare @newscore int
   select @sid=sid,@cid=cid,@oldscore=score
   from deleted
   select @newscore=score from inserted
print ' ' + convert ( nvarchar ( 30),getdate())+
      @sid+' ' + @cid+' 课程成绩由 ' +
       convert(nvarchar(3),@oldscore)+
      ' 改变为 ' + convert(nvarchar(3),@newscore)
 
create trigger tri_inssc
on sc for insert
as
   declare @sid nchar(10)
   declare @cid nchar(10)
   declare @s int
   select @sid=sid,@cid=cid,@s=score
   from inserted
   print @sid+' ' + @cid+' 课程成绩 ' + convert ( nvarchar ( 3),@s)
          +' 插入到成绩表中 '
 
insert into sc
values ('004','004',100)
update sc
set score=60
where sid='002' and cid='003'
 
update teacher
set tname=' 叶小平 '
where tid='004'
 
insert into teacher
values ('005',' 李云松 ' )
 
 
create trigger tri_inscourse
on course for insert
as
 declare @name nchar(10)
 select @name=cname from inserted
 print ' 名称为: ' + @name+' 的课程插入到课程表中! '
 
insert into course
 values('006',' 数据库程序设计 ' , '001' )
 
create trigger tri_upcname
on course for update
as
   declare @oldname nchar(10)
   declare @newname nchar(10)
   select @oldname=cname from deleted
   select @newname=cname from inserted
   print ' 课程名: ' + @oldname+' 改名为 ' + @newname
 
update course
set cname=' 数据库管理 '
where cid='006'
 
create trigger tri_delname1
on course for delete
as
 declare @name nchar(10)
 select @name=cname from deleted
 print ' 课程 ' + @name+' 删除了! '
 
delete from course
where cid='006'
 
create trigger tri_insofname
on course instead of insert
 as
   print ' 当前用户无权插入数据! '
 
insert into course
values ( '006' , ' 数据库管理 ' , '001' )
 
create trigger tri_insofname1
on course instead of update
 as
   print ' 当前用户无权更新数据! '
 
update course
set cname=' 专业英语 '
where cid='005'
 
drop trigger ...
create trigger 名称
 on 表名 for (insert update delete 其中之一 )
as
   语句
 
 
create trigger tri_insertname
 on student for insert
 as
    declare @name nchar(10)
    select @name=sname from inserted
    print ' 学生 :' + @name+' 插入到学生表中! '
 
-- 执行
 insert into .....
 
 
create trigger tri_deletename
 on student for delete
 as
     declare @name nchar(10)
    select @name=sname from deleted
    print ' 学生 :' + @name+' 从学生表中删除了! '
 
-- 执行
    delete from student
    where ....
 
create trigger tri_updatename
on student for update
as
    declare @oldname nchar(10)
    declare @newname nchar(10)
    select @oldname=sname from deleted
    select @newname=sname from inserted
    print ' 学生: ' + @oldname+ ' 更改为 ' + @newname
 
-- 执行
 update student
 set sname='' -- 新名
 where sname='' -- 旧名
 
create trigger insof_update
on student instead of update
as
   declare @sex nchar(10),@sid nchar(10)
   select @sex=ssex from inserted
   select @sid=sid from inserted
   if @sex not in (' ' , ' ' )
        print ' 插入值错误,请重做! '
      else
         update student
         set ssex=' '
         where sid=@sid
 
 
-- 执行
   update student
   set ssex='va'
   where sid=''
  
   update student
   set ssex=' '
   where sid=''
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值