对我很难,对你很易的问题(delphi+sql)

hzzkf 2000-07-11 05:52:00
高手们:
小生在漫长的岁月中掌握了单机编写数据库的方法(包括sql语言),在近段的服务器/客户机结构的应用程序编写中也掌握了一定的知识。但是,目前我碰见了一个关于数据库记录锁定的问题很伤脑子,具体情况是这样的:某个用户在找到一条数据后按下'开始修改'键,此时,我想用某个方法或函数使这条数据的状态变为锁定(我查阅了一些资料,在讲到排他锁等概念时很笼统,不知如何进行锁定操作?)。而其他用户如果在查看到这条锁定记录时如果按下'开始修改'键,此时程序调用某个函数将检测这条记录的状态,如果锁定,则弹出一个提醒框,否则也能进行修改操作。在修改结束后按下'修改结束'调用某个方法或函数将这条记录修改成功并恢复能查能改的状态。以上是我的理想方法,但由于水平有限,只能将它束之在脑海中,请各高手赐教!!(小生目前的解决办法是在表中增加一个'锁定情况'的字段,在某个用户开始修改时记录的这个字段中人工加进一些字符,这样,在别的用户也修改时先看这条记录的'锁定情况'字段的内容,如果无内容便进行修改,当修改完毕后再清空记录的这个字段内容。虽然这是一个办法,但占用资源较大,况且如果用户在按下'开始修改'键而没有按下'修改完毕'键时巧遇断电,那么就需要在服务器中手工将记录的'锁定情况'字段的内容清空,非常麻烦。)
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wonny 2000-07-12
  • 打赏
  • 举报
回复
确实很悲观!我的程序从来就不考虑断电问题,管它呢,不行拉倒。
liyang 2000-07-12
  • 打赏
  • 举报
回复
如果你在修改时打开一个新的recordset,就好办。在打开时,使用悲观锁。即一开始编辑就锁定该条纪录。在程序中,打开纪录时判断recordset的status属性,看是否是adRecUnmodified。即可.
zigzag 2000-07-12
  • 打赏
  • 举报
回复
使用ADO访问数据库,打开记录集时使用锁。其中悲观锁在编辑记录时就上锁,其他用户将不能不能对记录编辑;乐观锁在调用Update方法时才加锁。可根据你的需要使用两种方式。关于ADO的知识,可以参考这方面的资料。

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧