zobrazeni a aktualizace tabulky PostgreSQL

Karel Zak zakkr na zf.jcu.cz
Pondělí Červen 10 15:20:00 CEST 2002


On Mon, Jun 10, 2002 at 02:47:30PM +0200, Kotala Zdeněk wrote:

> No podle mne si musite uvedomit jak funguje SQL. Pokud udelate 
> select z databaze, tak z toho selektu dostanete data, ktera byla
> v te dobe v databazi, a pokud si je ctete pres kursory, tak samozrejmne
> data zustanou "vazana" k danemu casu, i kdyz mezitim se tabulka
> zmeni.
> Cely ten problem spociva  v transakcich a zamykani tabulek. Pokud pouzijete

 Zalezi jak moc dulezita jsou "aktualni" data (ani u toho
 LIMIT/OFFSET nemate jistotu, ze ve chvili, kdy user kouka na data
 jsou v DB takova). IMHO LOCK bych v transakcni DB moc nepouzival.

> v transakci selecty s OFFSET a LIMIT dostanete presne stejny vysledek jako
> s kursorama (aspon si to myslim :-). 

 Ano, vysledek je stejny, ale cesta k nemu dost ruzna. Doporucuji, aby do pripadneho 
 procesu rozhodovani co si vybrat vstoupila take efektivita. Offset/limit neni 
 nic uzasneho a v pripade, ze user casto potrebuje "behat" po tom resultu tak 
 je urcite lepsi kursor -- bohuzel ne vzdy pouzitelny (napr. web aplikace...)
 
> Jinak dle meho nazoru, pokud uzivatel edituje ciselnik, tak je dobre (snad i
> nutne)
> aby ostatni uzivatele ho nemohli modifikovat - tim se cast problemu resi.

 Konzistenci DB musi zajistit uz jeji definice bez ohledu na to jake
 SQL dotazy bude typicky klient pouzivat (pochopitelne pokud nebude
 primo memit to schema:-)
 
    Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/
 
 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz


Další informace o konferenci Databases