已采納回答 / 慕粉1852402560
MySQL的innodb存儲引擎支持行級鎖,innodb的行鎖是通過給索引項加鎖實現的,這就意味著只有通過索引條件檢索數據時,innodb才使用行鎖,否則使用表鎖。根據當前的數據更新語句(UPDATE user set name=‘11111’ where account=‘1’),該條件字段account并沒有添加索引,所以導致數據表被鎖。
2018-05-11
最贊回答 / AlanLiu0328
insert只會鎖當前行,別人insert和你insert不沖突。 而update就不一樣了。 比如大家都要更新1000元搶Iphone6更新,那么就會搶同一行的鎖
2018-04-10
最新回答 / 慕蓋茨030889
沒有庫存的情況下會insert,但是update執行時更新條數小于0,就會拋出異常、事務回滾。好處就是: 用戶第一次執行秒殺 ? insert -> update(持鎖) ->commit(釋放鎖)????????????????? 用戶第二次執行秒殺 ? ?insert -> result減少了事務行級鎖的時間。
2018-03-26
最贊回答 / 慕粉4220851
最直接一點也就是老師說的可以給他賦默認值為-2,因為我們在上面往map中存入該字段的時候他的值是null,而null賦值給int型的result會報錯,可能是為了避免這種錯誤吧。
2018-03-23