数据库记录锁定的问题?

hzzkf 2000-06-30 04:44:00
各个高手:
我在sql+delphi的程序中碰见一问题,我想在某个进程开始时锁定一条或一部分记录,此时别的程序用户只能查看但不能对此数据进行修改或删除,待我修改以后才能继续开放。如何解决?另外我想在dbgrid中自动监视sql库中某个数据表的数据,如何发现改动便刷新,如何解决?谢谢
...全文
253 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyzy313481929 2010-05-28
  • 打赏
  • 举报
回复

每天回帖即可获得10分可用分
w_anghe 2001-10-05
  • 打赏
  • 举报
回复
自己加控制字段当遇到服务器故障时怎么恢复?
hzzkf 2000-07-01
  • 打赏
  • 举报
回复
对不起,各位高手,我水平较低,请详细一点,谢谢!
wangminfu 2000-06-30
  • 打赏
  • 举报
回复
1。如果是自己开发程序或设计阶段,可以用一个系统状态标志实现多进程的同步、互斥和协同;
2。如果其它程序只有可执行文件形式,只有靠数据库的用户的授权和禁止实现,可以编制存储过程处理,在前端调用相应存储过程;
3。如果是一个开发团队,可以构造记录级的权限控制,方法是把原表扩充一个权限控制字段,例如:“[作者=a] [编辑者=b,c] [读者=d,e,f,g]”,a,b,c,d,e,f,g可以是用户,当然也可以是进程ID.
4。datasource的OnDataChange可以部分地解决你的问题,如果自己开发多个模块共用一个数据模块的话,在OnDataChange中调用refresh方法。如果是进程间的协调,只有在数据库端做文章,编写 update trigger,datasource上扩充扫描功能,监视数据的变化。
水哥驿站 2000-06-30
  • 打赏
  • 举报
回复
对于第一个问题,需要用到两个TQuery控件,一个用于锁定记录,另一个用于使锁定的记录可修改.如:第一个query的Sql为:Select * from 表 where 条件 for update nowait, 第二个query的Sql为:Select * from 表 where 条件. 这样,即锁定了记录,又
允许设RequestLive 属性为true,用第二个Query控件进行修改.

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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