当前位置:编程学习 > C#/ASP.NET >>

关于多用户操作时表锁定问题

是这样的,我有两个表,如下 
order表 
orderID serviceID serviceName state 

service表 
sevriceID serviceName 

上面两表都是主键自增的。 
我的思路是这样的:初始这两个表都是没有记录的,我想在新增一条记录的时候,先从service表取出max(serviceID)+ 1,然后插入到order表中,当这条记录插入order表后,再把order表中的serviceName插入到service表。步骤是这样: 

1.从service表取出max(serviceID)+ 1,由于初始两表都无数据,所以取得的serviceID为1,然后插入order表,这时两表情况 
order表 
orderID serviceID serviceName state 
  1        1        软件销售    1 
service表 
sevriceID serviceName 

2.再把order表中的serviceName插入到service表,这时两表情况 
order表 
orderID serviceID serviceName state 
  1        1        软件销售    1 
service表 
sevriceID serviceName 
    1      软件销售 

问题出现了:如果只有单个用户这样的操作是没有问题的,但是如果多个用户都在录入订单,就会出现从service表取出max(serviceID)+ 1的数据重复的问题。 
1.多用户操作取得的最大serviceID相同,因为都还没有往service表插入数据 
order表 
orderID serviceID serviceName state 
  1        1        软件销售    1 
  2        1        牛奶销售    1 
  3        1        订购月饼    1 
  ...      ...        ...    ... 

2.而这时候往service表抽入数据时,表出现这样的情况 
service表 
sevriceID serviceName 
    1      软件销售 
    2      牛奶销售 
    3      订购月饼 
  ...        ... 

这里看出order表的serviceID和service表serviceID不一致。 

而我想要的结果是这样的: 
order表 
orderID serviceID serviceName state 
  1        1        软件销售    1 
  2        2        牛奶销售    1 
  3        3        订购月饼    1 
  ...      ...        ...    ... 

service表 
sevriceID serviceName 
    1      软件销售 
     2      牛奶销售 
     3      订购月饼 
  ...        ... 


我想的办法是在:多用户在asp.net程序中提交表单时,先锁定service表,不其他用户允许读,取出当前最大serviceID,插入order表,然后插入service表后,再解除service表的锁定。 

但是怎么在程序中实现锁定呢?大家还有其他更好的办法吗?谢谢大家,请多指教。 
--------------------编程问答-------------------- 直接用自增字段不就完了
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,