欢迎来到天天文库
浏览记录
ID:23263864
大小:106.00 KB
页数:5页
时间:2018-11-05
《vf数据库加锁技术的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、VF数据库加锁技术的应用 摘要:VF数据库可以在网上由多个用户同时使用,当网上的多台计算机对主机数据库中的表进行操作时,为了防止多个用户同时修改一个表或一个记录而引起数据错误,VF提供了多用户共享数据库的访问技术。 关键字:人工锁定自动锁定VF 对共享库中的表,可能会有多个用户同时去修改,而引起表中的数据出错,为此对并行访问必须施加某些限制,使同一时刻只能由一个用户对记录或表进行修改,VF中用加锁的方式避免了多用户修改表时数据错误的产生。下面介绍VF中加锁的2种方式. 一、人工锁定 人工锁定是指在修改表或记录的命令前,用专门的锁定函数来
2、锁定表或记录,修改命令执行后,应该立即对表或记录解锁. 1、锁定函数 FLOCK(“表别名”)&&锁定表 LOCK(“0”,“表别名”)&&锁定表头 LOCK(“记录号1,记录号2,…”,,“表别名”)&&锁定单个或多个记录 锁定成功函数返回.T.值 2、解锁命令 UNLOCK&&解锁当前工作区内所有锁定的记录或表头或表5 UNLOCKRECORD记录号IN表别名&&解锁单个记录,当记录号为0时解锁表头 UNLOCKALL&&解锁所有工作区中所有锁定的记录或表头或表 3、锁定函数的使用 setmultilockson&&要锁
3、定多个记录必须做此设置 setreprocessto1 database\\主机名\磁盘名路径\数据1shared use表1shared iflock(“2,3”,“表1”) replacerecord2字段名with替换值 replacerecord3字段名with替换值 unlock else wait“锁定不成功” endif 如果lock函数锁定成功,将执行replace语句对2号3号记录中字段做替换,如果在执行lock函数时,其他用户锁定了2号或3号任何一个记录,则此处的锁定不成功。 4、锁定不成功的情况 ①
4、当表已被其他用户锁定时,再做表或表头或任何记录的锁定;②当表中已有记录或表头被其他用户锁定时,再做该记录或表头或表的锁定。 5、锁定不成功时锁定函数如何执行5 ①setreprocessto命令设置的数值在1―32000之间。锁定函数将按给定的数值反复尝试加锁。如setreprocessto30。函数会尝试加锁30次。30次还不成功函数返回。F.,上面的例子中尝试加锁1次,如不成功lock函数返回.F.,执行else下面的语句,显示出“锁定不成功”;②setrepro-cessto0此为默认设置,锁定函数将无限次的反复尝试加锁,直到某次加锁成
5、功,锁定函数返回.T.值。可以按ESC键取消加锁操作,此时锁定函数返回.F;③setrprocessto-1锁定函数将无限次的反复尝试加锁,ESC键也无法取消加锁操作,直到某次加锁成功,锁定函数返回.T.值,程序才能继续往下执行,如果上面的例子做此设置,else下的语句任何时候都不会执行。 6、锁定多个记录的条件 设置setmulitlockson,当设置setmulitlocksoff时可以锁定表,锁定表头,锁定表中的单个记录,上面的例子要锁定2个记录设置必须为on。 7、立即解锁 当加锁的用户对表或记录做完修改之后,应否则其他用户不能
6、对锁定的表或记录做修改。 二、自动锁定 自动锁定是指VF中有一些对表和记录的修改命令本身有加锁功能,修改表或记录的命令执行时首先做锁定,命令不同加锁的范围不同,命令执行完自动解锁。 1、下面使用REPLACE命令对2号、5,6,57号记录做修改,看一下自动锁定的过程。 setreprocessto1 database\\主机名\磁盘名路径\数据1shared use表1shared replacerecord2字段名with替换值 go5 replacenext3字段名with替换值 replace命令对单个记录修改时会自动锁
7、定要修改的记录,本例在执行replacerecord2命令时先锁定2号记录,锁定成功后对字段做替换。当替换完成时自动解锁2号记录,然后记录指针指向5号记录,接着做replacenext命令时要修改多个记录。此命令加锁范围是表,命令执行前先锁定整个表.锁定成功后做替换,替换完成时自动解锁整个表. 2、自动锁定也会不成功,原因与人工锁定相同. 3、锁定不成功时有自动锁定功能的这条命令如何执行要看setreprocessto的设置①setreprocessto命令设置的数值在1―32000之间。程序将按给定的数值反复尝试加锁,当执行到最后一次仍不成
8、功时,将执行onerror例程。如果没有onerror例程,将出现警告信息窗口,提示“其他用户正在使用该记录”。信息窗口上有“取消”“挂
此文档下载收益归作者所有