当两个程序要共用一个数据表时,为了防止数据操作时出现异常,用什么来控制最好???(100分)

  • 主题发起人 主题发起人 ghose
  • 开始时间 开始时间
G

ghose

Unregistered / Unconfirmed
GUEST, unregistred user!
我有两个小系统,一个是用来在别人使用它时写入一些相关的数据,另一个是用来在后面操纵数据库的,有什么好的办法能够控制他们呢?比如说一个程序需要修改里面的数据,而另一个数据却已经把她删除了……
 
Event, CriticalSection, Semaphore等都可以
 
sorry, 沒看清題意.
 
基本上不用控制啊。如果找不到记录,就报错好了。
也可以这样,
SQL:
if not ( exists ( select * from YourTable where KeyField = @keyfield))
return errorcode
else
update YourTable Set field = @fieldvalue
 
如果执行a程序,则对操作的数据加锁,b程序就无法对此数据操作了。
可以用holdlock关键字加锁,比如语句
update user set ... holdlock
也可以用Table1->Exclusive = true;
还可以在表上加一个islocked列,从而对表进行锁定:操作时先读取
Islocked的值,如为0,则可以操作,并且把islocked改为1,操作完毕后
又改为0。这样b就无法在a操作时修改数据了。
 
to milan:
在你所说的方法下好象只能控制当时瞬间的情形,例如:当时a在操作,而b操作触发了,这样的话,b 就不能完成该操作,我们需要不断重新触发b直到a操作完成的时候才能完成b操作,而我所要的功能是不管怎样,b操作是必须在执行第一次的时候就完成操作,不过也许可能也只有用你的方法来做了,如果有更好的就好了……
 
多人接受答案了。
 
后退
顶部