2011-05-26 127 views

回答

2

这意味着数据不一致,可能是因为某些表已更新而未更新相关表。

0

这通常可能意味着一些事情:损坏的数据库文件(通常在Access中发生)或事务仍在进行中或未完成或与数据库相关的文件处于打开状态。一旦“工作”完成,状态应该返回到“一致”。

0

可以说你有一个银行应用程序,你不使用交易。您打算将资金从一个帐户转移到另一个帐户,并且您首先执行的操作如update balance set value = value + $20 where account = account2,然后是update balance set value = value - $20 where account = account1。现在让我们说一下在这些查询之间发生了什么坏事(服务器崩溃,客户端提交查询崩溃,或者甚至另一个客户端进入查询中间并混乱)......数据库有问题。

对于事务,您的多个查询将是原子的。那是......全部或全部 - 直到你提交了完整的事务,其他客户端才能看到你的部分更改,并且数据库不会记录一个没有另一个的更改。

余额数量有点微不足道,但是在将多个条目添加到多个表格时很容易发生同样的问题,其中每个表格都是相关的。

0

原型的情况发生在并发处理的事务性环境,并且被解释如下:

  • 过程1请求从表从表A中
  • 过程1数据A
  • 处理2请求数据在表更新数据A
  • 过程2使用表A的非更新的数据为其制定

这会导致进程2的结果不一致。

例如,进程2可能会尝试更新表A中的数据:因此进程1所做的更新将丢失。

一个典型的解决这个问题是引入在第一步骤表A,直到过程1点结束(或者与COMMIT或回滚),以使其它进程不能使用相同的资源,直到锁具有释放。