pb更新属性讲解.docVIP

  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文档。上传文档
查看更多
pb更新属性讲解

pb更新属性讲解 PowerBuilder中可以通过数据窗口的更新属性(Update Properties)来实现并发控制。打开 DataWindow 画笔板,点击 Rows-Update Properties菜单,进入“Specify Updatae Properties”对话框,其中“Where Clause for Update/Delete”组合框中的三个选项就是三种处理数据并发问题的策略。 1、选项“Key Columns”: 这种情况是比较更新前后Table的关键字是否发生了变化,即当前数据库中关键字的实际值和最初查询的值做比较,如果没有改变,则可以更新,反之不能更新。 如用户A将员工号为100的职员的salary字段值改为1200并保存后,B用户也将员工号为100的职员的salary字段值改为950并点击“存盘”按钮,我们可以看到数据窗口sqlpreview事件中的sqlsyntax返回如: UPDATE personnel SET salary = 950 WHERE id = 100 因为关键字id=100没有发生变化,Where条件成立,更新成功,将A用户的修改覆盖,salary值变为950元,员工损失了200元。显然这样没有达到并发控制的目的,未能保证数据的完整性。 2、选项“Key and Updateable Column”: 这种情况是比较更新前后Table的关键字和可修改(更新)的列值是否发生了变化,如果没有一项发生改变,更新成功;反之,若数据库中当前值中若任一项与数据窗口最初检索出的值不一致,则更新失败。对于此例,因所有字段都是可修改(更新)的,即检测是否有任一字段变化。 同上,当用户A更新完后,B用户点击“存盘”按钮,我们可以看到sqlsyntax返回如: UPDATE personnel SET salary = 950 WHERE id = 100 AND name = 令狐冲 AND birthday = 1975-05-01 AND technical_post = 工程师 AND salary = 1000 AND notes = 软件开发 显然,id字段没有改变,而可修改(更新)列之一salary的值经A用户修改存盘后,已由1000变为了当前的1200,where条件不成立,因此更新失败,并弹出出错信息如下: Row changed between retrieve and update. No changes made to database. UPDATE personnel SET salary = 950 WHERE id = 100 AND name = 令狐冲 AND birthday = 1975-05-01 AND technical_post = 工程师 AND salary = 1000 AND notes = 软件开发 此时点击《刷新》按钮,我们可以看到,salary的值仍为1200,达到了并发控制的目的,保证数据的完整性。 3、选项“Key and Modified Columns”: 这种情况是比较更新前后Table的关键字和要修改(更新)的列值是否发生了变化,如果没有改变,更新成功,反之更新失败。对于本例,即判断关键字id和将要修改字段salary是否发生变化。 同上,当用户A更新完后,B用户点击“存盘”按钮,我们可以看到sqlsyntax返回如: UPDATE personnel SET salary = 950 WHERE id = 100 AND salary = 1000 这里id字段没有改变,而此次将要修改的列salary值已由1000变为了1200,where条件不成立,因此更新失败,并弹出出错信息如下: Row changed between retrieve and update. No changes made to database. UPDATE personnel SET salary = 950 WHERE id = 100 AND salary = 1000 此时我们点击《刷新》按钮,我们可以看到,salary的值仍为1200,也达到了并发控制的目的。 再举一个例子: 如果A用户更新的是备注notes字段,而B用户更新的是薪水salary字段,按照业务,这种操作是允许的,而在PB中会如何处理呢? 1、对于选项“Key Columns”: 因为关键字没有改变,更新成功。 2、对于选项“Key and Updateable Column”: 当用户A更新完后,B用户点击“存盘”按钮,我们可以看到sqlsyntax返回如: UPDATE personnel SET salary = 950 WHERE id =

文档评论(0)

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

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

1亿VIP精品文档

相关文档