- 1、本文档共2页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PB 下实现多用户安全访问
(深圳:独孤求败 2003-05-27)
PowerBuilder(以下简称 PB)是一个非常优秀的数据库前端开发工具,在 C/S 结构中它处于客户端。在PB 中,所有关于数据库方面的操作都交给 DBMS 完成,在一般情况下不用考虑多个用户同时访问数据库的问题。但 DBMS 提供的多用户支持仅仅限于 SQL 语句级,即保证两条 SQL 语句不会同时对一条记录进行操作。
比如,有 SQL 语句 A 和 B:
A:Update target Set col1=col1+1
Where keycol=key;
B: Update target
Set col1=col1+2
Where keycol=key;
其中,keycol 是表 target 的关键字,col1 是待修改的字段。
显然,A 语句和 B 语句都是可以再细分的操作,具体可以细分如下:
A1: 查找 keycol 值为key的记录A2: 读取 col1 字段的值,并计算结果A3: 将结果写回数据库
B1-B3 同 A1-A3 一样,只是 B2 在具体计算上有所不同。
如果 DBMS 无法保证 A 语句和 B 语句的互斥,就有可能发生写丢失。比如 col1 的值为 2,如果执行次序为(A1,A2,A3,B1,B2,B3)或(B1,B2,B3,A1,A2,A3),即 A、B 语句互斥,结果应为 5。但如果执行次序为(A1,A2,B1,B2,B3,A3),结果 col1 的值就成了 3,B3 进行的写操作就丢失了。所以 DBMS 在设计时,充分考虑了 SQL 语句级的并发性。但是,如果上面的 A 和 B 不是单条 SQL 语句,而是 SQL 语句序列, 那DBMS 就无法保证并发性的安全了。尤其是考虑到 PB 可以在脚本(Script)中混排 SQL 语句和 PB 语句, 这种安全性就更加无法保障。比如语句序列C 是由 SQL 语句和 PB 语句混排而成,同时有多个实例运行,让我们看一看在这种情况下,如何保证并发的安全性。为了方便起见,在例子中的 PB 语句是用伪语言写的。语句序列 C 为:
C1:select col1 into :value
from target where keycol=key; //将 col1 的值赋给变量 value
C2:chg=value100 //chg 为逻辑变量
C3:if chg
//执行 SQL 语句 A else
//执行 SQL 语句 B end if
其中,A、B 指的是前面的 SQL 语句 A 和 B。
如果两台计算机上同时运行序列 C,就有可能发生写丢失。因此,语句序列一级的并发安全性必须由程序来保证。上述问题如何解决呢?在写记录时,检查该记录是否被修改过,如果被修改过,就放弃写操作。
以上面的语句序列 C 为例,只要在 C1 执行完毕后,将读到的记录值存下来,等到 C3 执行的时候,在A 和 B 中加入相应的 where 条件,比较现在的记录值是否与原来一致,就能够判断出在 C1 和 C3 之间该记录是否被修改过。设表 target 只有 keycol 和 col1 两列,那么只用修改 A 和 B,就能将序列 C 改为具有并发安全性的序列。
A 和 B 的修改如下:
A:Update target Set col1=col1+1
Where keycol=key And col1=:value;
B: Update target Set col1=col1+2
Where keycol=key And col1=:value;
其中,变量 value是前面在 C1 运行的时候中记录下来的。
如果表中还有其他序列,就要修改语句 C1,将其他序列同时记录下来,并在 A 和 B 的条件中加入相应的判断条件。在使用这种办法的时候要注意,应该用一条Select 语句来记录表中的记录值,而不要分散到多条语句中去。同样,在写记录时,应该在 Update 语句中加入判断条件,而不要先判断,再写入。否则, 仍然会存在并发性问题。
您可能关注的文档
- MPLS分析和总结分析和总结.docx
- MP型塑料微型磁力驱动循环泵性能参数.docx
- MRI中T1和T2的含义与区分.docx
- MRP分析和总结分析和总结.docx
- MSChart控件教程分析和总结.docx
- MSDS783开油水安全技术说明书.docx
- MSDS表分析和总结.docx
- MSK调制解调分析和总结.docx
- MTK芯片功能详细介绍.docx
- mtm作榠指导书分析和总结.docx
- 13.3.1 第1课时 等腰三角形的性质 人教版数学八年级上册课件.pptx
- 24.1.4《圆周角 第2课时》数学人教版九年级上册教学课件.pptx
- 13.1.1 第1课时 轴对称和轴对称图形 人教版数学八年级上册课件.pptx
- 河南省信阳市罗山县2023-2024学年七年级上学期期中质量监测数学试卷(含解析).doc
- 13.1.2 第2课时 线段的垂直平分线的有关作图 人教版数学八年级上册课件.pptx
- 海南省华侨中学2023-2024学年八年级上学期期中考试数学试卷(含解析).doc
- 24.3 正多边形和圆 人教版数学九年级上册课件2.pptx
- 南宁市第三中学2023-2024学年八年级上学期开学考试数学试卷(含答案).docx
- 24.1.3 弧、弦、圆心角第3课时 数学人教版九年级上册教学课件.pptx
- 河南省许昌市第一中学2024届九年级上学期期中考试数学试卷(含解析).doc
文档评论(0)