SQL触发器的使用

来源:互联网 发布:目标利润推算法 编辑:程序博客网 时间:2024/04/29 09:05

SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表由系统来维护,它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行完成后,与该触发器相关的这两个表也被删除。

触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。

 

当对某张表建立触发器后,分3种情况讨论

  1.插入操作(Insert)

  Inserted表有数据,Deleted表无数据

  2.删除操作(Delete)

  Inserted表无数据,Deleted表有数据

  3.更新操作(Update)

  Inserted表有数据(新数据),Deleted表有数据(旧数据)

 

create table Place
(
ID  int  identity(1,1)  primary key,--ID
ProID   varchar(20)   not null,--产品编号
ProPlace   varchar(200)   not null --上车地点
)

create table Place1
(
ID  int  identity(1,1)  primary key,--ID
ProID   varchar(20)   not null,--产品编号
ProPlace   varchar(200)   not null --上车地点
)

 

--修改Place表时,把修改前的那一行记录插入到Place1表里
create  trigger  test
on Place
for update
as
begin    

insert  into  Place1  select  ProId, ProPlace  from  Deleted
end

 

里面的Deleted为触发器里的临时表,存储修改前的记录。