触发器
什么是触发器,可以理解为特殊的存储过程。修改表中指定数据时执行的存储过程。触发器是被动的通过事件触发,存储过程是主动地被调用。

create trigger trigger_Name on Student
after insert
as
begin
if OBJECT_ID('student_sum','U') is null--判断student_sum是否存在
create table student_sum(stuCount int default(0));--创建一个表默认是0
declare @stuNumber int;--定义一个stuNumber int类型的参数
select @stuNumber=COUNT(*) from Student; --查出学生的总数
if not exists (select * from student_sum)--判断表中是否有记录
insert into student_sum values(0)
update student_sum set stuCount=@stuNumber;
end
insert into student(name,sex,isOk)values('吕布','男',1);
select stuCount 学生总人数 from student_sum;
insert into student(name,sex,isOk)values('貂蝉','女',0);
select stuCount 学生总人数 from student_sum;
insert into student(name,sex,isOk)values('曹阿瞒','男',1);
select stuCount 学生总人数 from student_sum;
既然定义了学生总数表是向student插入数据后,计算的学生总数,所以禁止向该表中插入数据
create trigger insert_forbidden on student_sum
after insert --插入之后
as
begin
RAISERROR('禁止直接向该表中插入记录,操作被禁止',1,1)--raiserror 是用于抛出一个错误
rollback transaction
end
--创建删除触发器
create trigger tring_delete on Student
after delete
as
begin
select id as 已删除的学生编号,sex,isOk from Student
end
delete from Student where id=12
select id as 已删除的学生编号 from Student;