触发器(按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触发器
创建触发器
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触发器