Snapshot DB je v multiuživatelském prostředí cypovina.

V prvé řadě bych se snažil zamyslet, k čemu vlastně to UNDO má být.
Před implementací obecného undo je dobré se zamyslet, zda přidání
několika operací, které "navrátí"
hodnotu zpět, není to pravé ořechové. Třeba už pouhé undo na počítadle
se může jevit poměrně
hodně problematicky a pokud je při jeho implementaci na úrovni SQL
použita seqence, tak ono undo čisté IMHO udělat nepůjde vůbec.
A to se ani nebavím o tom, že už mohl být někde na pozadí spuštěn
nějaký proces, který vezme aktuální stav DB
a provede nějaké výpočty. Nebo že se automaticky vystaví objednávky,
faktury, uhradí příkazy k úhradě atd.

Problémem návratů zpět v procesech se zabývají tzv. Business transakce
a je to celá věda.
Sám jsem se podílel na tvorbě BTP (
http://www.oasis-open.org/committees/business-transactions/ )
a její implementace v Systinetu. Není to žádná sranda. I proto jsme
vytvořili úplně nový systém
na správu business procesů, ale to je teď vedlejší.

Takže po pár letech praxe mohu doporučit jenom jediné - jde-li to
řešit aplikačně, udělej to.
Nejde-li to řešit aplikačně, má vůbec smysl něco takového dělat?

Pokud to aplikačně řešit nejde a smysl to má, schválně sem popiš
přesný důvod, proč tomu tak je.
Moc by mne to zajímalo.
-- 
Oto 'tapik' Buchta, [email protected], http://tapikuv.blogspot.com

Odpovedet emailem