多人同时修改(并发)一张采购单据(单据数据从数据库的表里取出来),如何用锁防止数据不一致的情况?
procedure TFormKcspAdd.SpeedButton1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
try
SQL.Clear;
strSql:='update table1 set ';
strSql:=strSql+'pname='''+Edit1.Text+''', ';
strSql:=strSql+'pmoney='''+Edit2.Text+''', ';
strSql:=strSql+'pnumber='''+Edit3.Text+''' ';
strSql:=strSql+'where bh='''+Edit10.Text+'''';
SQL.Add(strSql);
ExecSQL;
SQL.Clear;
strSql:='update table2 set ';
strSql:=strSql+'pamount='''+strtofloat(Edit2.Text)*strtofloat(Edit3.Text)+''' ';
strSql:=strSql+'where f_bh='''+Edit10.Text+'''';
SQL.Add(strSql);
ExecSQL;
except
end;
end;
end;
问题是这样的:
A取出一张单据修改,随后B也取出这张单据修改,B先保存,这个时候A也要保存,可是B已经修改了,那A得到的数据就与数据库内的数据产生了不一致,
有很多办法防止这种情况发生,那我现在只想知道用锁是怎么实现的(数据库是sql server 2000(2005,2008)),
有具体的例子或代码吗(不要理论,也不要粘贴的链接),或者如上代码如何改成锁,从而防止如上情况发生?