*** 高分请教:MySQL的问题,请注意不是SQLServer ***
我的数据库是MySQL5.0,ODBC用的是MySQLODBC 3.51。
可是在开发时发现一个问题,如果ADOQuery在取数据和Post之间正好有人修改
了服务器上的同一条数据,那么Post就会出现“无法为更新定位行,一些值可
能已在最后一次读取后被修改”,我查了一下,在SQLServer下,可以将ADOQuery
的CursorLocation设置成clUseServer,就可以解决这个问题,但MySQL设置时
报错“Database does not suport bookmark "之类的错,反正就是不支持
clUseServer。
请问如何解决这个问题
1、请不要告诉我,在Post之前Refresh,这样用户的输入不是丢失了吗
2、请不要告诉我,自己拼Update的SQL语句来更新数据库,这样太麻烦而且表很多
3、请不要告诉我,用事务捕捉Exception并回滚,因为用户没有输入错误,这些
数据是要报存的,我只用把最新的东西存进去就可以了
我想问各位有什么解决方法,或者各位的MySQL是否支持clUseServer?
[解决办法]
ado不支持开放式并发处理,所以你也就别想着使用post来解决你的并发更新问题。
如果使用lock table 来锁定当前用户操作的表存在着表的死锁问题。
解决问题的唯一办法使用Update的SQL来更新用户数据。
如果是三层的话可以再数据层自定义更新方式,和上边的方法差不多,也是那么回事。
[解决办法]
你打一下Delphi7 Update1看看