第12章网络环境的数据共享选编.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章网络环境的数据共享选编

  第十二章;12.1 多用户概念 多用户环境是指在硬件和软件的结合上,允许两个或两个以上的用户同时访问(读写)数据库和外部设备。在多用户环境下,应当保证数据的一致性和正确性。加锁可以保证数据的一致性和正确性。 加锁是对表文件或记录加锁,只有对它加锁的用户才可以修改这些表或记录,而其他用户只可以读而不可修改这些数据,保证了数据的一致性和正确性。但在加锁后要及时解锁,以保证数据的共享。加锁也会带来两个新问题:即冲突和死锁。 冲突是指当一个用户加锁后修改一个记录和表文件时,另一个用户也企图打开同一表文件,修改同一个记录或表文件。从而发生冲突,我们可以用捕捉错误命令(ON ERROR)处理冲突问题。 死锁一般发生在多表操作时。用户甲对表文件A加锁,不允许其他用户使用,然后,准备使用表文件B的数据;但表文件B已被用户B加锁,不允许其他用户使用,且用户乙也准备使用表文件A的数据。此时,由于双方都在等待对方解锁,而甲、乙两用户无论等待多长时间,均无法等到对方解锁,从而发生死锁。我们可通过软件方法处理死锁问题。;12.2 数据共享或独占访问 在数据共享的环境中,可以按两种方式存取文件中的数据,一种是从独占文件中存取数据,另一种是从共享文件中存取数据。当一个文件以独占方式打开时,其他用户是不能以任何方式打开该文件的。当一个文件以共享方式打开时,其他用户只能以共享方式打开该文件。 1. 以独占方式访问表 将一个表按独占方式打开,目的是在访问表期间严格排斥其他用户的干扰,拒绝其他用户对文件中数据的任何修改。 方法⑴: SET EXCLUSIVE ON USE 表名 方法⑵: USE 表名 EXCLUSIVE;2. 以共享方法访问表 在访问表中的数据时不排斥其他用户的访问,允许多个用户同时对数据进行共享。这时,可以用共享方式打开表。 方法⑴: SET EXCLUSIZE OFF USE 表名 方法⑵: USE 表名 SHARED 当对表进行更新操作时,为了防止在更新期间其他用户的干扰,必须将受影响的记录或整个表锁定起来,对数据更新进行保护。;12.3 数据锁定 当按共享方式访问表时,必须通过表和记录的锁定来实现对数据的管理。在锁定后,其他用户可以对读数据,但不能对表或记录执行写操作。 锁定对象有两个:表和记录。表锁定是防止其他用户写整个文件,而记录锁定将防止其他用户修改被锁定的记录。 12.3.1 自动锁定 按锁定的方式可分为自动锁定和手工锁定。有许多命令(见教材中的表)在执行之前,将自动锁定一个记录或一个表,如果锁定成功,就执行该命令,执行完后再解除锁定,这就是自动锁定。;12.3.2 人工锁定及有关函数的应用 1. 表文件加锁函数FLOCK() 格式:FLOCK() 该函数试图将当前或指定工作区的表文件锁定(锁定全部记录)。如果加锁成功,返回“真”(T),加锁的用户可读写该表,其他用户只能读不能写。如果加锁不成功,则返回“假”(F),表示该表或表中的记录早已被其他用户锁定了。;2. 表记录加锁函数RLOCK() 格式:RLOCK([工作区号/别名]/[,字符表达式列表]) 该函数可锁定多个记录。其中,字符表达式选项指定一个或多个记录号,并用逗号将它们分开,RLOCK()函数就试着给这几个记录加锁。 例如,要给表中的前5个记录加锁,字符表达式就必须含有1,2,3,4,5,如果字符表达式不选,就只给当前记录加锁。 所指定的记录都加上锁,RLOCK()将返回.T.,如果表达式列表中的一个或者多个记录不能被锁定,RLOCK()将返回.F.,并且不给任何一个记录加锁。;3. 检测ON ERROR语句捕捉的出错号ERROR()函数。 格式:ERROR() ERROR()返回最近的一个错误号。在ON ERROR命令被激活的情况下,ERROR()返回一个非0值。当程序执行时遇到加锁失败等错误时,可用ON ERROR()程序中的ERROR()函数查明错误的类型,用MESSAGE()函数返回相应的错误信息。 4. 检测ON ERROR语句捕捉的出错号对应的出错信息函数MESSAGE()。 格式:MESSAGE([1]) 该函数是以字符串的形式返回当前的错误信息,或返回导致错误的程序行内容。任选项[1]表示可返回引起错误的源程序命令行内容。;12.3.3 解除数据锁定 当锁定一个记录或表后,就可在共享数据环境下完成

文档评论(0)

jiayou10 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档