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函数,它接受一个列名并告诉您是否已更新,或者您可以比较插入和删除的计数,如果它们相同,则这是一个更新,或者,您可以手动从“已删除”中选择插入值和删除值不匹配的行