Heim > Fragen und Antworten > Hauptteil
A und B greifen gleichzeitig auf einen Datensatz auf derselben Seite zu. Eine der Daten von B wurde nicht aktualisiert, sodass die Informationen, die B sieht, vor A liegen. Zu diesem Zeitpunkt hat B sie auch geändert Diese Daten müssen geändert werden. Wie kann ich B daran erinnern, dass diese Daten geändert wurden?
Ich habe eine Möglichkeit gesehen, die Daten anhand des Zeitpunkts der letzten Änderung vor der Änderung herauszufinden (wählen Sie * aus xxx, wobei updatetime = xxx und id = xxx sind). Wenn es nicht gefunden werden kann, bedeutet dies, dass es geändert wurde gefunden wird, bedeutet dies, dass keine Änderungen vorgenommen wurden.Ich würde gerne fragen, ob es einen besseren Weg gibt?
typecho2017-07-07 10:37:07
我记得hibernate中乐观锁用的是版本号字段实现的,每次更新成功后时候版本号字段的值加1
在更新前,先检查数据库中的版本号和页面中保存的版本号是否相同,如果版本号变大,提示用户在编辑期间已有其他用户修改了数据。
当然也可以用悲观锁,进入页面的时候使用的select ... for update锁定记录,这时候其他用户就不能同时编辑锁定的记录了。
大家讲道理2017-07-07 10:37:07
给数据表加个字段update_at
类型为TIMESATMP
,默认值为CURRENT_TIMESTAMP
,其他不用改
每当数据被更新后,该值会自动更新
女神的闺蜜爱上我2017-07-07 10:37:07
在这条数据里面加个version 字段版本号 默认从0开始,没修改一次自增一次,每次提交验证本次的version和数据库里的version是否一致即可。