bonjour, lors d'un update à 12h05 d'un record que j'ai lu et stocké dans mon application à 12h, je voudrais savoir les moyens de contrôler que le row dans la bdd n'a pas été modifié entre temps.
En résumé, pendant mon update, je voudrais contrôler que le timestamp du record que je suis en train d'updater est bien le même que celui que j'ai stocké.
Je suis en php pdo mysql.
Certains sgbd supportent en effet des mises à jour du type :
1 2 3 4 5 6 7
| for first row where id = :id
if row.timestamp différent de :timestamp_stocké_lors_de_la_lecture_un_peu_plus_tot
quit <-- sortie de la requete sans mise à jour
endif
set row.colonne_a_mettre_a_jour = nouvelle_valeur_que_je_veux <- mise à jour
set row.time_stamp = new date()
endfor <- commit |
Bien entendu je voudrais éviter, dans ma requête, d'utiliser une clause du type
... and timestamp = :timestamp_stocké_lors_de_la_lecture_un_peu_plus_tot
A la rigueur si après ma requête je peux connaître le timestamp du row avant modif, ça me va car je peux déclencher un rollback. Mais est ce possible d'avoir cette information ?
Partager