在工作中,我们有时需要分析一个现有软件的数据库结构,简单的说,就是想知道两点
2 .在什么情况下,表中的数据会发生更新 【程序编程相关:如何将网页数据输出为Excel或Word】1 .各种数据保存在哪个表 【推荐阅读:oracle全球管理与新技术大会上海内容】
1.为数据库中的每一个业务表建立对应的更新表 【扩展信息:终于贴上文章了!】
下面我把自己的方法写出来,如果您有更好的方法,请与我讨论.
当相应业务表的数据被更新时,触发器会把更新的类型与记录写进相应的更新表 更新表的字段除了包括相应业务表的所有字段,还添加了三个字段(1) 一个自增的id
(2) 更新类型(i 插入;d 删除;u 更新) (3) 更新时间2.在数据库中建立一个总更新表
当任何一个业务表的数据被更新时,触发器会把更新的类型与表名写进总更新表,作用是快速找到当前发生数据更新的表
总更新表有四个字段(1) 一个自增的id
(2) 更新类型(i 插入;d 删除;u 更新) (3) 更新的表名 (4) 更新时间3.为每一个业务表建立三个触发器,分别对应插入.删除.修改三种操作
当业务表发生更新时,会把更新前的记录.更新后的记录.删除的记录.插入的记录写入相应更新表为此我专门写了两个存储过程,适用于sql server 2000,如果您的数据库不是sql server 2000,也可供您参考
为了新建立的表与触发器与数据库中原有的表与触发器同名,采用了加后缀方法,比如表名为 users的表,相应的更新表为users+后缀,当后缀为_1234567时,更新表的表名为users_1234567下面是存储过程p_analysis与p_clearup的脚本
/*=========================================================================
存储过程 p_analysis作用为分析建立一个总的更新表 update+后缀+后缀为每个表建立一个更新表 原表名+后缀为每个表建立三个触发器 tr_表名_+触发器类型(i:插入 d:删除 u:更新)+后缀输入参数 @postfix,以免分析用表与业务表名称重复,分析用触发器与原由触发器重复
使用举例 exec p_analysis ´_1234567´============================================================================*/... 下一页