Da se vymyslet spousta zpusobu jak takovou situaci z pohledu UI vyresit. Bude vsak vyhodnejsi moznost kdy se data neprepisi, ale vytvori se nova verze zaznamu,
Ale tim prece nic nevyresis - stejne bude muset nekdo rozhodnout o tom, ktera z tech verzi je platna, protoze vetsinou nemuzou existovat v jeden cas ruzne varianty tehoz,
takze do aplikace budes muset navic implementovat funkcionalitu pro sefa, aby mohl vyresit kolize verzi.
Ja bych to resil vuci BFU ofenzivne tj. pomoci OCC (Optimistic Currency Control) zahrnutim detekce konfliktu a vyfuckovanim zmen pri konfliktu tj. do DB modelu bych pridal pole s verzi radku (rada RDBMS neco takoveho podporuje, ja se s tim potkal u DB/2 a MSSQL), pri fetch si ho nacetl a v prikazu, ktery zkousi menit data bych do where klauzule pridal podminku na shodu verze radku mezi fetchnutou hodnotou a skutecnou hodnotou v DB v okamziku modifikujici transakce. A v pripade rozdilu bych nedovolil DB modifikovat a zobrazil BFU, ze zatim co byl na obede, uz to nekdo zmenil a at si to resi. Kdyz bych na nej chtel byt hodne friendly, tak bych mu pres mechnismus validace zobrazil, co se zmenilo.
Mam dojem, ze Delphi obsahuje nekde na urovni Data Snap nejakou podporu pro OCC, ktera nejak obhospodaruje stary/novy zaznam a nejakou podporu pro reseni , ale nikdy jsem s tim nic nedelal.