关于数据保存,不知道是不是属于并发的?!(20)

  • 主题发起人 主题发起人 Flashcqxg
  • 开始时间 开始时间
F

Flashcqxg

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了个测试: 机器A和机器B上同时打开一个表,并取出表中的一条记录,这条记录有三个字段,一个为关键的ID,另外两个是需要修改的。 在机器A上修改了ColA,机器B上修改了ColB,然后提交保存,结果发现有一个并没有保存上。 查看了日志,发现以下语句: UPDATE T1 SET ColB='1' WHERE ID='297196' 然后另外一条是: UPDATE T1 SET ColA='1', ColB=NULL WHERE ID='297196' 看了才知道,原来先修改的ColB的值被后面的给替换了,但有个问题,在修改的时候,确实是一个修改ColA,另外一个修改了ColB的呀,为什么第二条日志会出现ColB=NULL呢? 请大家帮忙看看哈,谢谢了。
 
问题描述不清楚
 
设定自增长字段做主键,当同时缓存的数据保存时,检查其是否变化,若和以前的数据比,不同的话,就有问题,提示不允许保存.
 
顶下,看下大家还有没有其他意见哈。
 
更新语句做事务提交
 
您讲的是什么意思????
 
ADOC.BeginTrans; ADOC.CommitTrans;ADOC.RollbackTrans;就是说当a打开时候,禁止b编辑!
 
谢谢您:zkktom请问是在读取数据的时候呢还是更新数据的时候?或者两者?
 
用事务或存储过程都可以解决
 
smlabc:能不能详细说明一下呀,用点代码表达更好。
 
我也挺感兴趣,帮你顶
 
你写的是两层的吧。 在DATASET.BEFORPOST 事件里写: DataSet.Properties.Item['Update Criteria'].Value := $0;这样的话以后一个保存的为准。
 
如果用TDataSetProvider自动产生SQL语句更新的话,经过测试是不会的!另外,1.可以再考虑禁止某字段更新.2.自己分析Delta来产生更新语句(Insert ,Update,Delete....)
 
多人接受答案了。
 
后退
顶部