两个客户端同时操作一个表中的一条记录,怎样保证记录的一致性,谢谢
两个客户端同时操作一个表中的一条记录,怎样保证记录的一致性,谢谢
update tablename set 字段落1=(刚读出的字段1值)-3 where 字段2= 'aaaa '
如果两个程序同时执行了上面的语句,请问程序怎样处理.
[解决办法]
楼主的 "结贴 "好像是用说的,不是做的哦
[解决办法]
数据源本身具有锁定的能力(LockType),用于避免两个SQL Query操作同时写同一条记录
[解决办法]
这个就要用到事务了
用事务提交,不然如果同用户同一时间执行的话就容易照成死锁
给你一个用ADO的事务处理例子(Delphi),TDataBase也是类似
ADOConnection1.BeginTrans; //开始事务
try
with ADOCommand1 do
begin
Connection:=ADOConnection1;
commandtext:= 'update [country] set [population]=10000 where [name]= ' 'Venezuela ' ' ';//正确的SQL语句
Execute;
CommandText:= 'Wrong SQL Command ';//错误的SQL
Execute;
ADOConnection1.CommitTrans; //提交事务
end;
except
on E: Exception do
begin
ADOConnection1.RollbackTrans; //如有异常,事务回滚
ShowMessage(E.Message);
end
end;
end;
[解决办法]
楼上正解。不过数据库肯定不会同时执行这样的SQL语句,所以不会有影响
[解决办法]
我一般采用权限,让他们虽说是对一行记录操作但不操作同一字段。
[解决办法]
~~混贴好了,,,楼上几个都解释了。。。