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