These are the options I've thought of:
DotNet Dave:
UPDATE mytable set f1=newval where id=666 and f1 := f1ValueFromSelect
Charlie Checksum:
UPDATE mytable set f1=newval where id=666 and md5(concat(id,f1)) := checksumFromSelect
Timothy Timestamp:
UPDATE mytable set f1=newval where id=666 and mytimestampfield := timestampFromSelect
Veronica Version:
UPDATE mytable set f1=newval, version=version+1 where id=666 and version=versionFromSelect
I like Dave, as no schema changes required. Have to keep all of record's original data on client though. How to compare blobs?
Charlie is good in that less data to send to client. Not sure about performance with blobs/clobs
Tim and Veronica are good as pretty simple though may require schema change. Timestamp looks a bit more foolproof. How cross-platform is it?
Thanks!