主题:[请教] 用共享方式打开的表,在用DELE做删除标记时用不用加锁?
北京种子乐
[专家分:3710] 发布于 2008-07-20 08:21:00
用共享方式打开的表,在用DELE做删除标记时用不用对记录或表加锁?
谢谢!
回复列表 (共14个回复)
沙发
cbl518 [专家分:57140] 发布于 2008-07-20 10:19:00
单扳机不用!
板凳
北京种子乐 [专家分:3710] 发布于 2008-07-20 10:23:00
[quote]单扳机不用![/quote]
“单扳机”是什么意思?
不是指单机吧?
3 楼
cbl518 [专家分:57140] 发布于 2008-07-20 10:36:00
单扳机就单用户专用的程序!
4 楼
北京种子乐 [专家分:3710] 发布于 2008-07-20 11:02:00
[quote]单扳机就单用户专用的程序![/quote]
问题的关键好象不是“专用的程序”,
而是表是不是多机共用,也就是多机共享吧?
5 楼
0901chang [专家分:10660] 发布于 2008-07-20 12:58:00
楼主,单片鸡也不用。
6 楼
北京种子乐 [专家分:3710] 发布于 2008-07-20 13:39:00
[quote]楼主,单片鸡也不用。[/quote]
乌鸦弟你好:
我的理解是DELE和RECALL都是要向表里写东西,而不是读。如果多机同时操作一个表或一个记录时,能不能出问题?
例如:DELE FOR AA=3
RECALL FOR AA=3
当然只:DELE 或 RDCALL 操作的时间非常短,机率非常小,但必竟是有。只要有就可以视为软件存在隐患。
不知是否可以这样理解?
7 楼
0901chang [专家分:10660] 发布于 2008-07-20 14:57:00
这两条指令好像都可以共享操作,写入系统会自动加锁的。
你要是不想等待系统提示,就自己先加锁,然后根据加锁情况进行操作和提示。
8 楼
0901chang [专家分:10660] 发布于 2008-07-20 15:09:00
DELE FOR ??? 会对整个表自动加锁,和 repl ?? with ?? for ??? 一样,
dele 只对当前记录加锁,和 repl ?? with ?? 一样。
我是依此类推来理解的。所以我对一些重要的数据更新时,先自己加锁
if rlock()
更新一条记录的数据
unlock
else
提示用户
endi
if flock()
更新多条记录的数据
unlock
else
提示用户
endi
9 楼
北京种子乐 [专家分:3710] 发布于 2008-07-20 15:33:00
我现在的做法与你8楼讲的相同,
也知道REPL、DELE等语句有自动锁记录或锁表功能,但为了安全起见,还是没敢省略。
10 楼
0901chang [专家分:10660] 发布于 2008-07-20 15:55:00
省略的安全没有问题,自己加锁则可以灵活的提示用户去如何操作,对用户的操作会更友好一些。
现在,各种数据库的这种操作安全肯定不会再存在问题,都是用了许多年的产品了。
我来回复