打个比方:现在商城里就剩唯一的一件商品,卖完了就再也不会有了。
这时,有两个客户,在几乎相同的时间(假设相差无限接近0),提交了订单,要购买此商品。
那问题来了,这两份申请会被记录吗,还是只记录相对的前一份申请?
我理解是可能这两份申请都会被记录,因为服务器在接受前一份申请后还没来得及将数据库中的数量清0,下一份申请同样也能被执行。我想请问,php有没有可以防止这一问题发生的机制??具体怎样实现,最好有个小案例什么的,呵
这时,有两个客户,在几乎相同的时间(假设相差无限接近0),提交了订单,要购买此商品。
那问题来了,这两份申请会被记录吗,还是只记录相对的前一份申请?
我理解是可能这两份申请都会被记录,因为服务器在接受前一份申请后还没来得及将数据库中的数量清0,下一份申请同样也能被执行。我想请问,php有没有可以防止这一问题发生的机制??具体怎样实现,最好有个小案例什么的,呵
你第一条sql去执行的时候,第二条sql不会同时执行的。
有先有后,这样的话,应该不会出现你担心的问题。
写事务就能解决吗
写存储过程可以吗
各位说的具体点行不,,谢啦啊
因为如果就是一个update,只要在update后判断update是否有实际改动(检查affect_rows)即可,如果你需要改动若干表而且要保持一致,就需要事务。不建议自己lock表因为交给事物让数据库自己控制更安全高效。存储过程并不能解决一致性问题,同样要通过事务。
我的mysql装好apache就有了,,怎么查看是不是InnoDB类型??怎么查看,在哪查看
用phpadmin之类的图形界面看。不会的话就到mysql的后台输入 SHOW VARIABLES LIKE '%Engine%';