触发器是在用户进行某项操作的时候,会触发触发器的执行。它类似于JAVA中图形界面编程中的事件处理一样,是触发执行。和存储过程的主要区别在于:存储过程类似JAVA的对象,进行功能的封装(方法)。在调用的时候才会执行。而触发器只能在别的操作执行的时候才会触发触发器的执行。
创建触发器
--创建触发器1
if exists(select name from sysobjects
where name='trigger1'and type='tr')
drop trigger trigger1
go
create trigger trigger1
on stu
for insert
as
begin
if exists(select * from stu where age<16 or age>30)
begin
print 'b ok'
rollback
end
else
begin
print 'ok'
commit
end
end
go
--该操作会触发触发器的执行
insert into stu values(2223,'adaf',12,103)
创建触发器2
--创建出发器2
if exists(select name from sysobjects
where name='trigger2'and type='tr')
drop trigger trigger2
go
create trigger trigger2
on stu
for update
as
IF (select max(age) from stu) > 30
BEGIN
RAISERROR ('不能把年龄修改为30岁以上的,或者输入年龄大于30岁以上的', 16, 1)
ROLLBACK TRANSACTION
END
--该更新语句会触发触发器的执行
update stu
set age=116 where s_id=1001