zobrazeni a aktualizace tabulky PostgreSQL

Karel Zak zakkr na zf.jcu.cz
Pondělí Červen 10 12:06:01 CEST 2002


On Mon, Jun 10, 2002 at 11:54:21AM +0200, Martin Sittek wrote:
> 
> Příjemnou zaležitostí toho PC FADu bylo také to že každá
> věta (v termiologii SQL řádek) měla své jedoznačné 'fyzické
> číslo věty' a 'logické číslo věty'. Fyzické čislo věty odpovídalo
> pozici věty zapsainé na disku a logické čílo odpovídalo pozici
> podle zvoleého indexu. Je mi jasné, že fyzické člíslo věty by 
> se dalo "napodobit" položkou typu automatické číslo ovšem já 
> bych spíše potřeboval to logické číslo věty - existuje 
> v PostgreSQL něco takového? 
> 
> Kdyby existovalo a já bych tudiž věděl že první řádek v okně 
> setříděiného podle nějakého klíče ma logické číslo věty x, 
> uživatel by stisknul PageUp pak bych vytvořil "select * from 
> neco order by klic where  logicke_cislo_vety >= x - velikost_okne 
> and logicke_cislo_vety <= x;".
> 
> Ovšem mám pocit že nic takového u PostgreSQL a jemu podobných 
> systémů není. Tuduž otázka zní jak se něco takového dělá v
> těchto DB systémech?
> 
> Vím o LIMIT a OFFSET, ovšem není mi jasné jak tyto hodoty 
> "ukočírovat" když okno aktuálně zobrazuje někde prostředek tabulky
> a já nemán žádný pevný bod od kterého bych se odpíchl (teď mě napadá,
> že tenhle problém už také někdo řešil ovšem ten chtěl myslím hýbat
> úplně něčím jiným :-).

 Jak to, ze nemate pevny bod? Co jsou ty LIMIT a OFFSET posledne
 polozeneho dotazu? Neco takoveho mam u jedne web aplikace a moc v tom
 nenachazim nejaky problem.

 Proste az v tom listu v GTK dojede user na posledni dostupnou radku
 tak provedete update toho listu z dotazu s LIMIT a OFFSET kde offset
 bude vetsi prave o hodnotu limitu naposledy polozeneho dotazu. Pro
 vas programek by asi nemel byt problem si nekde tuto hodnotu
 uchovavat.

 A nebo poradne reseni tohoto zadani zni pouzivat cursor, tedy
 pro dany list si deklarovat select 

    DECLARE cursorname SELECT id, data FROM neco;

 A pak postupne zadat o data:

    FETCH FORWARD 10 FROM cursorname;

 Vrati deset radek z toho selectu, muzete pouzivat i BACKWARD. Vice
 viz docs.
 
    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