在新增时,没有Deleted这个表,只有Inserted表
在删除时,没有Inserted这个表,只有Deleted表
只有在Update时,才有这两个表
所以要看你的需要决定要建几个触发器
在触发器中,有两个特殊的逻辑表:
inserted 和 deleted
这两个表是系统自动生成的.
inserted中记录的是新增或修改后的内容
deleted中记录的是删除或修改前的内容
例如有如下表:
a
id,name
1 aa
2 bb
1.新增
执行:insert into a(id,name) values(3,'cc')
这时,在触发器中
inserted表的内容就是:
3 cc
deleted表内容为空
2.修改
执行:update a set name=name+'1' where id<3
这时,在触发器中
inserted表的内容就是:
1 aa1
2 bb1
deleted表内容为空
1 aa
2 bb
3.删除
执行:delete from a where id=2
这时,在触发器中
inserted表的内容就是空
deleted表内容为空
2 bb
所以你的触发器可以这样写:
方法1
create trigger aa on 你的表
for insert,delete,update
if exists(select * from inserted)
if exists(select * from deleted)
....... --记录操作为修改的处理语句
else
.......... --记录操作为新增的处理语句
else
......... --记录操作为删除的处理语句
方法2.分开写
create trigger aa on 你的表
for insert
as
........ --记录操作为新增的处理语句
create trigger aa on 你的表
for update
as
........ --记录操作为修改的处理语句
create trigger aa on 你的表
for delete
as
........ --记录操作为删除的处理语句
deleted和inserted是系统自动生成的两个临时表
deleted存删除操作前的记录
inserted存插入的数据记录