怪我咯2017-04-10 14:30:033楼
典型的并发问题。建议用乐观锁模式处理,同时兼顾性能。具体步骤如下:
1、添加第3个字段version, int类型,default值为0。version值每次update时作加1处理。
ALTER TABLE test_tb ADD COLUMN version INT DEFAULT '0' NOT NULL AFTER useCount;
2、select时同时获取version值(例如为3)
SELECT useCount, VERSION FROM test_tb WHERE id=123456 AND useCount < 1000
3、update时检查version值是否为第2步获取到的值
UPDATE test_tb SET VERSION=4, useCount=useCount+1 WHERE id=123456 AND VERSION=3
如果update的记录数为1,则表示成功;
如果update的记录数为0,则表示已经被其他应用(线程)update过了,需作异常处理
注:以上思路参考自JavaEE的JPA乐观锁@version处理机制。
这里有一个参考http://www.blogjava.net/sway/archive/2008/10/10/233569.html