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为触发器里的临时表,存储修改前的记录。