php - Wie stellt die Datenbank fest, ob ein Datenelement geändert wurde?
大家讲道理
大家讲道理 2017-07-07 10:35:07
0
7
1614

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?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

Antworte allen(7)
typecho

我记得hibernate中乐观锁用的是版本号字段实现的,每次更新成功后时候版本号字段的值加1
在更新前,先检查数据库中的版本号和页面中保存的版本号是否相同,如果版本号变大,提示用户在编辑期间已有其他用户修改了数据。

当然也可以用悲观锁,进入页面的时候使用的select ... for update锁定记录,这时候其他用户就不能同时编辑锁定的记录了。

伊谢尔伦

我会这样做————加个字段,edit_num,每改一次+1,B要改的时候比对一下。

黄舟

乐观锁 乐观锁 乐观锁

给我你的怀抱

乐观锁机制 通过给数据添加一个version字段来实现

大家讲道理

给数据表加个字段update_at类型为TIMESATMP,默认值为CURRENT_TIMESTAMP,其他不用改
每当数据被更新后,该值会自动更新

女神的闺蜜爱上我

在这条数据里面加个version 字段版本号 默认从0开始,没修改一次自增一次,每次提交验证本次的version和数据库里的version是否一致即可。

为情所困

xxx表里加一个版本号的字段

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage