historie a jedinecnost [Re: Platnost zaznamu v ciselniku jeste jednou]

Radek Kanovsky rk na dat.cz
Čtvrtek Červenec 24 13:23:19 CEST 2003


On Thu, Jul 24, 2003 at 10:31:13AM +0200, Karel Zak wrote:

> > >  Pomerne snadno v triggeru, ktery to prekryvani odhali. 
> > 
> > Ano, ale zapomnel jsem zminit, ze bych to potreboval z urcitych duvodu
> > resit na aplikacni urovni. Nad databazi je objektove-relacni mapovani.
> > V tomto konkretnim pripade je preferovana flexibilita nad vykonem a cim
> > vic veci bude reseno v programovacim jazyku O-R komponent (python),
> > tim lip pro nas.
> 
>  Tak na to co by se ptal ten trigger dejte do aplikace do stejne 
>  transakce, jako ten insert (nejlepe pred nej:-)
> 
>  Asi se shodneme na tom, ze na urovni definice tabulek to tezko
>  udelate, takze na to budete muset pouzit jeden extra SQL dotaz. Bud ho
>  date do toho triggeru (a pak se vlastne stane soucasti te DB) a nebo
>  do aplikace. Asi mi neco uniklo, protoze v tom zadny problem nevidim.
>  (Pokud vase aplikace z nejakeho duvodu nepracuje primo SQL dotazy
>   a nehcete trigger tak to pak mate problem... :-)

Myslenkovy pochod byl takovy, ze v triggeru to bude jednodussi, protoze
databaze pri INSERTu sama zamyka tabulku. Ale v postgresu je tento
lock nedostatecny na to, aby zamezil dalsim insertum mezi triggerem
a vlastnim insertem.

Naopak se mne ted po obede jevi jednoduchy trigger jako nevyhovujici,
protoze pravdepodobne bude potreba zamknout tabulku BEFORE a odemknout
AFTER. Takovy cirkus uz je docela velka komplikace a lepsi bude to resit
v aplikaci.

Muj puvodni dotaz byl, jestli nema nekdo nejaky tip, jak to resit
bez zamykani tabulky.

RadekK


Další informace o konferenci Databases