轻松掌握:触发器生成数据库表操作日志
作为一名数据库管理员,你尽力以各部门熟知的不同格式,向各部门提供它们所需要
的数据。你通常将 MS Excel 格式的数据递交到会计部门,或将数据以 HTML 报表的形式
呈现给普通用户。你们的系统安全管理员们则习惯于用文本阅读器或者事件查看器来查看
日志。本文将介绍如何使用触发器,把 DML(数据操作语言)对数据库中的特定数据表的
改动记录下来。注:下列例子为 Insert 型触发器,不过改成 Delete/Update 型的触发
器也很容易。
操作步骤首先让我们在 Northwind 数据库内创建一个简单表。
create table tablefortrigger
(
track int identity(1,1) primary key,
Lastname varchar(25),
Firstname varchar(25)
)
创建好这个数据表后,添加一个标准 message 到 master 数据库的 sysmessages 数据表
中。注意,我所添加的是一个参变量,用以接受一个字符值,它将被输出显示给管理员们。
通过设置@_with_log 参数为 true,我们包管相关结果被发送到事件日志。
sp_addmessage 50005, 10, '%s', @with_log =
true
现在我们创建这条用有意义的信息填充的消息。下面的信息将填充这条消息,并且记
录到文件中:
·操作的类型(插入)。
·受到影响的数据表。
·改动的日期与时间。
被该语句插入的全部字段。 下面的这个触发器用预定义值(1~3 个字符)创建一个
字符串,该预定义值位于 inserted 数据表中。(这个 inserted 数据表驻留在内存中,它容纳
被插入到触发器所在数据表的记录行)。触发器连接这些值并放到一个@msg 变量。然后
这个变量被传送到 raiserror 函数,该函数将它写到事件日志中。
Create trigger TestTrigger on