触发器(按T-SQL标准书写)

触发器(按T-SQL标准书写)

创建触发器
Create  trigger 触发器名 before|after(默认) 触发事件 on 表名或视图名
    for each | row | statement        三种类型
    when 触发条件
    as sql过程即触发动力部分
删除 drop trigger 触发器名

例1:创建一个AFTER触发器,要求实现以下功能:在sc表上创建一个插入、更新类型的触发器scoreCheck,当在grade字段中插入或修改考试分数后,触发该触发器,检查分数是否在0~100之间。
-- 如果已经有这个名字的触发器了,删除之
if exists (select name from sysobjects where name = ‘scoreCheck’ and type =’TR’) drop trigger scqoreCheck;
-- 创建触发器
create trigger scoreCheck on sc for insert,update
as
    if update(score)
    print ‘AFTER触发器开始执行……’
    begin
        declare @ScoreValue real
        select @ScoreValue=(select score from inserted)
        if @ScoreValue>100 or @ScoreValue<0
            print ‘输入的分数有误,请确认输入的考试分数!’
    end
创建了scoreCheck触发器之后,运行如下SQL语句:    --皆会出错
insert into sc values(‘20030156’,’01’,-40)
update sc set score=123 where sno=’20030101’and cno=’1’

例2:创建一个INSTEAD  OF触发器,要求实现以下功能:在c表上创建一个删除类型的触发器NotAllowDelete,当在c表中删除记录时,触发该触发器,显示不允许删除表中数据的提示信息。
if exists (select name from sysobjects
     where name = ‘NotAllowDelete’ and type =’TR’)
         drop trigger NotAllowDelete
create triggerNotAllowDelete
    on c instead of delete
    as
        print ‘INSTEAD  OF触发器开始执行……’
        print ‘本表中的数据不允许被删除!不能执行删除操作!’


你可能感兴趣的:(SQL)