一解决友好的脏读脏存的方法

*先说下事情的起因,公司的财务总监查看了公司的总帐是500万,前段时间支出了10万但是系统还没有走帐,这时总监就分咐小李去走下帐。
由于总监记性不太好,刚通知完小李又通知了小曾。巧的是小李和小曾同时查看了公司的帐目表(比如GRIDVIEW),发现现帐确实是500万。
于是小李先走了10万,搞定回家吃玉米了。这时虽然小李已经走了10万,但是由于是web系统,本来就是无连接的。这时小曾也没有刷新页面。
还是显示的500万总帐,于是小曾拿下正在放着狮子座的MP3的耳机,又走了10万。这时候小李和小曾都以为已经完满的完成了任务。谁知第二
天上班总监把小李小曾一同叫去了办公司,对他们说“我说李哥、曾哥。你们怎么回事啊?让你们走10万的帐确走了20万。你们是不想混了是吗?
这时这李小曾你看看我,我看看你,心里茫然(本故事纯属加班到深夜已经到了神呼的状态的人虚购)

下面来说一下我的解决办法。比如下面的表(不要考虑数据库的结构,我是说假如)
SysNo  总帐
   1      500万

我们在后面增加一列,我采用的是GUID,当然SQLSERVER也有自己的时间戳方式记录修改状态
SysNo  总帐   更新标识(GUID)
   1     500万   GUID1

这样,还是上面的情况,当小要更新时,会用客户端的GUID码去进行比对,这时客户端GUID码为GUID1和数据库中一置,进行正常的更新操作,并
重新生成新的GUID更新标识。

这时小曾也进行更新操作,但是对比GUID更新标识的时候发现数据库中的GUID码为GUID2与客户端的GUID1不对应,这时系统会给予一个友好的提示,
比如:“对不起,发生了友好冲突问题,请重新操作!”并同时更新下页面重新读取GUID标识码,这时标识码为GUID2再次更新时就可以正常更新了,但
是本例的情况更新后小增发现,哇已经是490万了,那我就不用再走帐了。继续啃他的玉米去了。

这只是本人想的一个不是很正规的解决特有问题的方式,其它的方法还请有经液的人拍砖。

唉,时间不早了。回家休息吧,明天一早还要上班!

posted @ 2009-08-25 22:51  Assion Yang  阅读(...)  评论(...编辑  收藏