SQL触发器-基础知识帮助

SQL触发器-基础知识帮助,sql,triggers,sql-server-2000,Sql,Triggers,Sql Server 2000,我很少写触发器。我可以用你的帮助来安装这个东西 CREATE TRIGGER audit_tableName ON dbo.tableNameAudit AFTER CREATE, UPDATE, DELETE on tableName AS BEGIN --Get Created,updated,deletes items INSERT into dbo.tableNameAudit(columns) VALUES ([allCUDitems]) END GO 如何对任何创建、更新

我很少写触发器。我可以用你的帮助来安装这个东西

CREATE TRIGGER audit_tableName
ON dbo.tableNameAudit
AFTER CREATE, UPDATE, DELETE on tableName
AS
BEGIN
  --Get Created,updated,deletes items
  INSERT into dbo.tableNameAudit(columns) VALUES ([allCUDitems])

END
GO
如何对任何创建、更新和删除的导致触发的项目进行迭代?

签出

简短的是有两个特殊的表,插入和删除,可以在触发器中访问。“插入”将包含更新的行和插入的行,而“删除”将包含更新的行和删除的行


确保您了解对于批处理操作,触发器只触发一次,因此请确保处理这些表中存在多行的可能性。

触发器可以访问两个:
插入的
删除的
。顾名思义,这些伪表将包含从表中添加或删除的所有值。更新将导致每个伪表中出现一行。这些伪表的结构与声明表的表的结构相同


此外,触发器内的函数将为已更新的列返回TRUE。

您可以使用插入的。[COLUMN]或

SELECT [COLUMN] 
FROM INSERTED
这是在SQL Server上实现的


希望对您有所帮助。

@user728314如果您突出显示代码并按
{}
,您的代码将被格式化。虽然我很确定信息会相似,但您的链接是针对sql server 2008 r2的,而不是针对2000的。@Remus Rusanu-取得了很大的进展。在观看INSERT、UPDATE和DELETE时,如何判断哪个op触发了触发器?从我在文档中阅读的内容来看,似乎我需要在插入时使用
inserted
,在更新/删除时使用
deleted
。我不关心更新审计跟踪中的新值。@P.Brian.Mackey,您可以使用UPDATE函数,它接受一个列名并告诉您是否已更新,或者您可以比较插入和删除的计数,如果它们相同,则这是一个更新,或者,您可以手动从“已删除”中选择插入值和删除值不匹配的行