Article View: pl.comp.lang.delphi.bazy-danych
Article #82424Re: FIREBIRD - sortowanie pola VARCHAR wg liczb w nim zawartych
From: wloochacz
Date: Fri, 28 Nov 2014 21:45
Date: Fri, 28 Nov 2014 21:45
36 lines
2455 bytes
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-mailReferences:
<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