比如对一个表中的A记录的B字段进行操作--------这个操作是并发的!
这个操作过程是这样的:
1.先取出A记录B字段。
2.根据我们的大量计算公式----这个公式是非常复杂的,无法在sql中计算只能取出数据在进行计算!
3.这时在将计算的结果写入A记录B字段!存在的问题:
如果两个客户同时取出A记录B字段的数据,这时它们的数据都是一样的了,这样进行计算后的结果在写入数据库-----它的数据就是脏数据,应该是一个串行过程序,但是我们又要求大并发,响应数据快!我不知道这样问题怎么解决,请各位高手指点一下,我试过很多方案都不行,很难做到大并发!
这个操作过程是这样的:
1.先取出A记录B字段。
2.根据我们的大量计算公式----这个公式是非常复杂的,无法在sql中计算只能取出数据在进行计算!
3.这时在将计算的结果写入A记录B字段!存在的问题:
如果两个客户同时取出A记录B字段的数据,这时它们的数据都是一样的了,这样进行计算后的结果在写入数据库-----它的数据就是脏数据,应该是一个串行过程序,但是我们又要求大并发,响应数据快!我不知道这样问题怎么解决,请各位高手指点一下,我试过很多方案都不行,很难做到大并发!
每条记录的编号,只要有新的记录,id号就自动加1用序列来实现
--建序列:
create sequence seq_name
increment by 1
start with 1
maxvalue 99999999999
nocycle
cache 10--调用:
insert into table(id,name) values(seq_name.nextval,'名字');
然后进行修改,修改完以后,将a记录里面的某个扳本控制字段加一
这样另外一个用户如果仍然对a记录要进行修改时,由于a记录的版本已经加了一,与此用户先前取得的版本不一致,那么此用户就无权修改