第1个回答 2010-12-26
DML 触发器语句使用两种特殊的表:删除的表和插入的表。SQL Server 2005 会自动创建和管理这两种表。您可以使用这两种驻留内存的临时表来测试特定数据修改的影响以及设置 DML 触发器操作条件。但不能直接修改表中的数据或对表执行数据定义语言 (DDL) 操作,例如 CREATE INDEX。
删除的表用于存储 DELETE 和 UPDATE 语句所影响的行的副本。在执行 DELETE 或 UPDATE 语句的过程中,行从触发器表中删除,并传输到删除的表中。删除的表和触发器表通常没有相同的行。
插入的表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在执行插入或更新事务过程中,新行会同时添加到 inserted 表和触发器表中。插入的表中的行是触发器表中的新行的副本。
更新事务类似于在删除操作之后执行插入操作;首先,旧行被复制到删除的表中,然后,新行被复制到触发器表和插入的表中。
在设置触发器条件时,应使用激发触发器的操作相应的插入的和删除的表。尽管在测试 INSERT 时引用删除的表或在测试 DELETE 时引用插入的表不会导致任何错误,但在这些情况下,这些触发器测试表将不包含任何行。