·只有inserted表有数据时,当前操作为insert;
·inserted和deleted两张表都有数据时,当前操作为update;
·只有deleted表有数据时,当前操作为delete。
创建触发器用 CREATE TRIGGER
代码如下 | 复制代码 |
CREATE TRIGGER 触发器名称 |
nserted、deleted
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表。例:
代码如下 | 复制代码 |
create trigger tbl_delete |
说明:如果向 inserted 或 deleted 虚拟表中取字段类型为 text、image 的字段值时,所取得的值将会是 null。
注意:触发器名称是不加引号的。
如下是联机丛书上的一个示例,当在 titles 表上更改记录时,发送邮件通知 MaryM。
代码如下 | 复制代码 |
CREATE TRIGGER reminder |
# 创建update类型触发器
代码如下 | 复制代码 |
--update更新类型触发器
# update更新列级触发器 if (object_id('tgr_classes_update_column', 'TR') is not null) |
更新列级触发器可以用update是否判断更新列记录;
SQL Server触发器判断当前操作类型(insert/update/delete)示例
代码如下 | 复制代码 |
create trigger updateRowVersion on PPM_JobBill
|
触发器有两个特殊的表:插入表(instered表)和删除表(deleted表)。这两张是逻辑表也是虚表。有系统在内存中创建者两张表,不会存储在数据库中。而且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的结果总是与被改触发器应用的表的结构相同。当触发器完成工作后,这两张表就会被删除。Inserted表的数据是插入或是修改后的数据,而deleted表的数据是更新前的或是删除的数据。
对表的操作
|
Inserted逻辑表
|
Deleted逻辑表
|
增加记录(insert)
|
存放增加的记录
|
无
|
删除记录(delete)
|
无
|
存放被删除的记录
|
修改记录(update)
|
存放更新后的记录
|
存放更新前的记录
|