🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #82424

Re: FIREBIRD - sortowanie pola VARCHAR wg liczb w nim zawartych

#82424
From: wloochacz
Date: Fri, 28 Nov 2014 21:45
36 lines
2455 bytes
W dniu 2014-11-28 08:32, Leszek pisze:
/ciach/
> Zrobiłem tak, jak napisałeś:
> 1. Dodałem nowe pole LP(INTEGER).
> 2. Założyłem indeks na tym polu.
> 3. Zdefiniowałem trigger dla tabeli PRG:
>    CREATE TRIGGER PRG_BI FOR PRG
>    ACTIVE BEFORE INSERT OR UPDATE
>    POSITION 1
>    AS
>    BEGIN
>      execute procedure DAJLICZBE NEW.NR returning_values NEW.LP;
>    END;
> 4. Zrobiłem zapytanie: select * from PRG order by LP.
> Wykonało się około 20 razy (!) szybciej niż zapytanie, które wcześniej wymyśliłem...
> DZIĘKUJĘ CI BARDZO ZA TRAFNĄ ODPOWIEDŹ.
Eee... proszę bardzo, ale to raczej oczywiste ;-)

> Trigger, który korzysta z procedury napisałem po raz pierwszy w życiu, więc jeśli można było go napisać mądrzej, to bardzo proszę jeszcze o sugestie...

Aktualizujesz zawsze wiersz, a powinieneś tylko wtedy kiedy dodajesz 
nową wartość lub zmieniasz istniejącą; a więc:
   CREATE TRIGGER PRG_BI FOR PRG
   ACTIVE BEFORE INSERT OR UPDATE
   POSITION 1
   AS
   BEGIN
     if (NEW.NR is not null and OLD.NR is null) or (NEW.NR <> OLD.NR) then
   execute procedure DAJLICZBE NEW.NR returning_values NEW.LP;
   END;

Coś w ten deseń; ja ostatni trigger dla FB pisałem jakieś 10 lat temu, 
więc mogę coś poknocić...

-- 
wloochacz
Technical Details
Message-ID: <5478ed05$0$9811$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <957a2b2f-bf50-47f6-aba1-55cb5371b656@googlegroups.com> <54772d3f$0$2662$65785112@news.neostrada.pl> <1c569e65-a537-4b14-affd-969e12ea61a1@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Fri, 28 Nov 2014 22:45:18 +0100
From: wloochacz <wloochacz@no.spam.gmail.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
Newsgroups: pl.comp.lang.delphi.bazy-danych
Subject: Re: FIREBIRD - sortowanie pola VARCHAR wg liczb w nim zawartych
References: <957a2b2f-bf50-47f6-aba1-55cb5371b656@googlegroups.com> <54772d3f$0$2662$65785112@news.neostrada.pl> <1c569e65-a537-4b14-affd-969e12ea61a1@googlegroups.com>
In-Reply-To: <1c569e65-a537-4b14-affd-969e12ea61a1@googlegroups.com>
Lines: 36
Message-ID: <5478ed05$0$9811$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.11.152.225
X-Trace: 1417211141 unt-rea-a-02.news.neostrada.pl 9811 83.11.152.225:7837
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit