[Dbix-class] Optimistic locking

Dan Horne dan.horne at redbone.co.nz
Sat Aug 5 18:39:12 CEST 2006


> On Behalf Of Zbigniew Lukasiak
>
> Hi,
>
> There will be race conditions - is that acceptable for you?  See following
scenario:
>
> Person A wants to save new record values
> Person B wants to save new record values
> A fetches the record to compute the hash
> B fetches the record to compute the hash
> The record has not been changed yet so both A and B are ready to save
their new values
> A saves her new values
> B saves her new values
>
> The result is that the values saved by A are overwritten by B without any
warning.
>
> It would be safe if we could do a
>
> UPDATE rec ... WHERE (id = our_id AND hash = the_old_hash_val)
>
> This would be a real optimistic locking using the database mechanisms to
eliminate the race conditions.
>
> --
> Zbyszek
>
Yes, I've been thinking about this in the meantime and have decided to add a
version column to each table and do something similar to what you suggested

UPDATE rec set col1 = <col1>, col2 = <col2> ... version = version + 1 ...
WHERE conditions and version = old_version_value

Dan





More information about the Dbix-class mailing list