最近在写一个购物网站,遇到些问题。点击购买之后,需要将Products表中的 ID 写入CartItems表中,然后 更新Products表中的Status列, 由0变为1 。
涉及到一个并发控制的问题,现在只是把插入订单放入了一个事务代码块中,是不是在把更新Products表的操作也放到插入的事务里 就可以解决并发的问题?
希望有过同样经历的人路过,留下您宝贵的经验。。。
注:问过我一个同学,说是并发控制机制SQL SERVER 2005里有,说不用管就可以。是不是还要在数据库里做些设置?
因为涉及两个表的操作,最好把这两个操作放在事务中,否则会出现: 如果CartItems更新好了,而Products更细失败,那么两个表不一致,不用事务的话,只能自己处理这个情况了。
搜索一下sql server的默认锁机制 你的操作肯定是应该放在一个事务里了
看这个 SET TRANSACTION ISOLATION LEVEL READ COMMITTED
我们以前用过,放一个事务里就OK了