mysql5.6
ڲݿʱܻڲݵIJһԣݳͻ
ֹ
ֹݿԴģҪԼȥʵָֹ֡ݿʱ(²)뷨ֹۣΪεIJᵼ³ͻڲʱκҲDzڽиºȥжǷгͻˡ
ͨʵģڱеݽвʱ()ȸݱһ汾(version)ֶΣÿһΣ¼İ汾ż1ҲȲѯ¼ȡversionֶ,Ҫ¼в(),жϴ˿versionֵǷողѯʱversionֵȣȣ˵ڼ䣬ûвִи£versionֶεֵ1ʱִ˿̵versionֵոջȡversionֵȣ˵ڼѾвˣи²
µ3裺
1.ѯƷϢ
select (status,status,version) from t_goods where id=#{id}
2.ƷϢɶ
3.ƷstatusΪ2
update t_goods
set status=2,version=version+1
where id=#{id} and version=#{version};
Լֶʵֹ֮⣬Ѿװֹʵ֣hibernateҪʱ"hiberate ֹ"Կ
ֹӦľDZˡڲʱΪ˲ݳͻڽÿβʱҪͨȡܽжͬݵIJjavaеsynchronizedƣԱҪķѽ϶ʱ䡣ֹӦģݿԼʵ˵ģҪõʱֱӵݿͿˡ
˵ɱ漰ͳˣǾǹDZIJͬʵ֣ڱķ롣
ָľǶڶͬͬһԴͬһ൱ڶͬһţӵжԿһһţŵԿкüѣһѣŮһѣǶͨԿǼңһ˹ûνĹ
ո˵ˣڱһݿѾʵˣҲڱһ֣ômysqlͨʲôءͨѯϣ˽ִͨlock in share modeʹijЩԴϹˡ
磬ͨmysqlѯ༭пһִcommit
---------------------