SQL触发器

来源:互联网 发布:淘宝直播销量权重 编辑:程序博客网 时间:2024/06/08 00:28

什么是触发器?

触发器是在对表进行插入、更新或删除操作时自动执行的存储过程

触发器通常用于强制业务规则

触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束 :可执行复杂的SQL语句(if/while/case)、可引用其它表中的列

触发器定义在特定的表上,与表相关。

自动触发执行

不能直接调用

是一个事务(可回滚)使用触发器的好处触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用CHECK约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。

触发器的类型

DELETE 触发器

INSERT 触发器

UPDATE 触发器

 

创建触发器  语法

CREATE TRIGGER trigger_name

 ON table_name

 [WITH ENCRYPTION]

  FOR [DELETE, INSERT, UPDATE]

 AS

  T-SQL语句

GO

 

 

会员表

 

学员表

 

教练表

 

题目如下:

 

根据申请会员申请的权限不同,将会员的ID插入到不同表中

会员包括{学员,教练}

MID为Member主码,自增。

学员权限码为0

教练权限码为1

 

SQL代码如下

 

create trigger tri_Member  on tb_Member
for insert
as
begin

declare @Quan int;

select @Quan=MQuanfrom inserted
if(@Quan=0)
insert into tb_Stu(MID)
select MID from inserted

else

insert into tb_Coa(MID)
select MID from inserted
end

 

 

当会员删除时,可以创建DELETE 触发器根据权限删除对应表中的数据。



触发器可以解决你在数据插入,更改,删除时,与之有关联表的数据插入,更新,删除操作。

比如,表MID为tb_Member主码,自增.同时作为的tb_Stu和tb_Coa的外码,当表tb_Member数据插入时,希望表tb_Stu或tb_Coa可以自动插入与之关联的外码值。