Sql server--触发器

1 触发器的概念

        触发器是⼀一类特殊的存储过程,其特殊性在于它 并不需要由⽤用户来直接调⽤用,⽽而是在对表或视图发出 Insert UpdateDelete语句时⾃自动触发执⾏行的。因此,可将触发器看成是信息的后过滤器。

        使⽤用触发器主要会利⽤用到两张很重要的逻辑表:deleted表和inserted表。这两张逻辑表有系统创建,并存在内存中。也称为虚 拟表。是只读的、不可修改的。当触发器执⾏行完毕后,将会被删 除。这两张表存放了⽤用户对表的操作数据。 


格式:

Create trigger 触发器名称 
On 表名 With encryption
For insert,Update,delete
As
Sql语句
Go

insert触发器

任务:在Users表中创建名为tr_user1的触发器,要求当 添加⼀一个新⽤用户时,能马上显⽰示添加的新⽤用户信息。 
新的记录信息在inserted表

Create trigger tr_user1
On users for insert
as
select * from inserted
go

delete触发器

任务:在Users表中创建名为tr_user2的触发器,当删除⼀个⽤户于时,要求如下:
1、马上显⽰示被删除的⽤用户信息。 
2、能输出信息:被删除的⽤用户是**

Create trigger tr_user2
on users for delete
as
select * from deleted
select ‘被删除的用户是’+(select username for deleted)
go

update触发器

任务:在Users表中创建名为tr_user3的触发器,要求当修改一个⽤用户信息时,能马上显⽰示该⽤用户修改前和修改后的信息。 

Create trigger tr_user3
on users for update
as
select * from deleted
select * from inserted
go


练习

任务: 本⽉月25⽇日编号为9702的职员销售了货号为1001,货名为CPU的货物4个,销售价格为1000元。要求当插⼊入销售记录时,能⾃自动修改库存表中的卖出数量。

create trigger tr_sell
on sell with encryption for insert
as
update stock 
set sale_num = sale_num+(slelct sel_num for inserted)
where ware_id = (select ware_id from inserted)
go


修改触发器

alter trigger 触发器名


重命名触发器

sq_rename 触发器原来的名字,新名字


删除触发器

drop trigger 触发器名


查看触发器

查触发器的信息                         sp_help 触发器名字

查看表的触发器类型                    sp_helptrigger 触发器所属表的名称

查看未加密的触发器定义              sp_helpText 触发器名称

查看触发器的依赖关系                 sp_depends 触发器名称

你可能感兴趣的:(Sql server--触发器)