VFP表跟踪日志的实现方法

VFP表跟踪日志的实现方法,第1张

VFP表跟踪日志的实现方法,第2张

介绍了数据库触发技术在Visual Foxpro中的应用实例,为VFP表建立跟踪日志,提供了一种解决网络多用户环境下数据文件安全的方法。
关键字触发技术,表格跟踪,自定义函数

表格跟踪问题:

在管理信息系统的正常运行中,信息安全问题日益突出。虽然网络为我们提供了一定的数据安全性,只有授权用户才能对数据进行日常维护,但有时用户的误操作可能会导致数据丢失或混乱;此外,有时我们需要保留数据更改的记录。对于重要的数据文件,需要记录每一次数据变更的审计日志,并建立其对应的日志表,以跟踪其添加、删除和修改。日志记录了什么时候,哪个用户做了什么样的操作,记录了用户添加或删除的信息,以及修改记录的原始信息和修改信息,并备份了被操作的记录。

VFP触发器技术:
Visual FoxPro与以前版本的一个主要区别在于它使用了数据库的强大功能,使其成为一个真正的数据库。VFP的数据库容器包括表及其各种属性定义,还包括后端SQL中的触发器技术。

触发器的使用为数据库中的表提供了一个记录级的规则(即检测器)。触发器分为三个操作:插入触发器、更新触发器和删除触发器。插入触发器用于向表中添加记录时触发的检测程序,更新触发器用于修改记录并保存回表中时触发的检测程序,删除触发器用于删除表中记录时触发的检测程序。VFP允许您为任何操作设置不同的规则,这些操作可以是表达式或用户定义的函数(UFD)。如果响应为真,说明触发成功;如果响应为假,则意味着触发器失败。用户定义的函数(ufd)存储在数据库容器中。

创建触发器有两种方式:
1)打开表属性对话框,在插入、更新或删除触发器框中输入触发器表达式或用户定义函数(UFD);

2)使用创建触发器命令。

创建、修改或删除存储过程有三种方式:
1)在项目管理器中,选择并展开一个数据库,选择存储过程,然后选择新建、修改或删除按钮;

2)在数据库设计器中,从数据库菜单中选择编辑存储过程按钮;

3)在命令窗口中,使用修改程序命令。

表格跟踪设计:
利用插入触发器、更新触发器、删除触发器三种工作原理,可以构造一个实现表格跟踪的装置。这样,无论用户是使用程序操纵该表,还是直接打开该表来添加、删除和修改记录,都可以激发触发器来记录被操纵的记录。

我构造了四个通用的自定义函数,Inslog()、Dellog()、Modlog()和addlog(),存储在数据库容器的存储过程中。添加Inslog()函数、Dellog()函数、Modlog()函数对需要表跟踪的数据文件插入触发器、删除触发器、更新触发器,这样数据文件中记录的增加、删除、修改都会刺激触发器进行日志记录。Addlog()用于建立被跟踪表的日志表结构。日志表结构设计包含了被跟踪表的所有字段信息,增加了用户标志opid、操作日期和时间optime、操作标志opmak字段。日志的命名规则是在被跟踪表的表名前加‘L’以示区别。另外,我在存储数据文件的目录下设置了一个子目录LOGDBFS,专门用来存储日志表进行管理。四个功能编程如下:

*插入触发器:
FUNCTION in slog()
m . path = SUBSTR(DBF(),1,rat(\,DBF())
m . logname = m . path+log dbfs \ L+SUBSTR(DBF(),Len(m . path)+1)
if not file(m . logname)
= add log()& &建立日志表结构
迪恩
scattermemvar
m . opmak = s
FROM MEMVAR &&记录添加的记录
return.t .

*删除触发器:
FUNCTION dellog()
m . path = SUBSTR(DBF(),1,rat(\,DBF())
m . logname = m . path+LOGDBFS \ L+SUBSTR(DBF(),Len(m . path)+1)
if not file(m . logname)
= addlog()
迪恩
scattermemvar
m . opmak = Delete & >删除记录标志[]

*更新触发器:
FUNCTION modlog()
m . path = SUBSTR(DBF(),1,rat(\,DBF())
m . log name = m . path+log dbfs \ L+SUBSTR(DBF(),LEN(m . path)+1)
IF NOT FILE(m . log name)
= add log()
ENDI
DIME alog[FCOUNT()+3]
alog

*建立日志表结构:
函数addlog()
*取被跟踪的表字段
copystru到tmp extend
*建立用户标志、操作时间和操作标志字段信息
插入tmp.dbf
(字段名称,字段类型,字段长度);
值(OPMAK,C,6)
插入tmp.dbf
(字段名称,字段类型,字段长度);
值(OPID,C,10)
插入tmp.dbf
(字段名称,字段类型,字段长度);
值(optime,t,8)
在tmp中使用
oldselect = select ()&&生成日志表结构
sele 0
create(m . logname)from tmp
delete

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VFP表跟踪日志的实现方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情