问一个简单的问题,有关数据库中事务概念的.(105分)

  • 主题发起人 主题发起人 base6
  • 开始时间 开始时间
B

base6

Unregistered / Unconfirmed
GUEST, unregistred user!
两个客户端同时读写一个数据库中的表
比如有一个数据的值为500,
有一家用户想购买其中400点,另一家想购买300点
当然只有手快的能成交啦

不知delphi中如何编写这样的程序,望大侠们不吝指点
 
是锁的概念。设置一个变量,说明当前数据状态,在一方修改记录前,先检查该变量。
如果true,先设成false,然后再修改记录,修改完毕将变量设成false。
如果false,则等待。
 
procedure TForm1.ApplyButtonClick(Sender: TObject);

begin
with CustomerQuery do
begin
Database1.StartTransaction;
try
...
...
Database1.Commit; {手快有,手慢无)
except
Database1.Rollback; {on failure, undo the changes};
raise; {raise the exception to prevent a call to CommitUpdates!}
end;
end;

end;
 
呵呵,典型的PV操作问题了,把500这个共享变量设为互斥使用,设定一个信号量决定
过程是否能访问该共享变量。就可以了
 
在Query.Sql中写入
update tableaa set field1=field1-:aa where PK_field=:PK_value and field1>=:aa

调用Query.ExecSQL;

检查Query.RowsAffected
 
agree with Victortim
 
1.用临界变量
2.用互斥变量
 
多人接受答案了。
 
后退
顶部