您现在的位置:中国下载站学院中心网络编程PHP教程PHP实例教程 → 文章列表

用触发器生成数据库表的数据操作日志

作者:佚名  来源:不详  发布时间:2007-4-14 11:50:31   

减小字体 增大字体

 
 
  作为一名数据库管理员,你尽力以各部门熟知的不同格式,向各部门提供它们所需要的数据。你通常将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
tablefortrigger
for insert
as

  --声明储存消息的变量

  Declare @Msg varchar(8000)

  --将"操作/表名/日期时间/插入字段"赋与消息

set @Msg = 'Inserted | tablefortrigger | ' + convert(varchar(20), getdate()) + ' | '
+(select convert(varchar(5), track)
+ ', ' + lastname + ', ' + firstname
from inserted)

  --产生错误发送给事件查看器。

  raiserror( 50005, 10, 1, @Msg)

  运行以下语句对触发器进行测试,然后查看事件日志:

Insert into tablefortrigger(lastname, firstname)
Values('Doe', 'John')

  如果你打开事件日志,你应该看到以下消息:


在百度中搜索更多用触发器生成数据库表的数据操作日志相关网页 转贴于:中国下载站

  • 上一篇文章:打造超酷的PHP数据饼图
  • 下一篇文章:利用PHP函数来实现"桥接"AJAX引擎和RSS内容
  • 阅读统计:[]
  • 中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接

    • Copyright (C) 2006-2008 www.cndownz.com All Rights Reserved.
      中国下载站 版权所有. 粤ICP备05141802号. 对本站有任何建议、意见或投诉,请来信:cndownzcom@yahoo.com.cn.
      喜欢中国下载站(cndownz.com),请把中国下载站(cndownz.com)告诉你QQ上的5位好友,多谢支持!