秒杀成功后,再次刷新页面,为什么会把秒杀开始时间改变了??
秒杀成功后,再次刷新页面,为什么会把秒杀开始时间改变了??该怎么处理
秒杀成功后,再次刷新页面,为什么会把秒杀开始时间改变了??该怎么处理
2017-05-13
给大家一个详细的步骤。。
修改了数据库里seckill表的start_time的属性就好了,
把DEFAULT CURRENT_TIMESTAMP ON UPDATE,改为 DEFAULT '0000-00-00 00:00:00'
不知道为什么当时sql创建完后start_time的属性是 CURRENT_TIMESTAMP ON UPDATE。。。
老师当时:
修改后:
原因:
timestamp如果设置成CURRENT_TIMESTAMP ,当执行insert操作的时候,会插入当前系统时间。
如果是ON UPDATE CURRENT_TIMESTAMP,当执行update操作的时候,会跟着更新为当前UPDATE操作时的时间。
我们项目里在执行减库存的时候,执行的是update语句:
update
seckill
set
number = number -1
where seckill_id=#{seckillId}
and start_time <![CDATA[ <= ]]> #{killTime}
and end_time>=#{killTime}
and number>0;
所以会随着这个秒杀减库存的操作改变start_time的值。
举报