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 Test