Strona 1 z 1

Odzyskanie wartosci generowanej w bazie

Nowy postNapisane: środa, 15 lipca 2009, 16:18
przez mentalmesh
Korzystam z komponentow IBQuery i bazy danych InterBase.
W bazie danych mam przykladowa tabele z np. dwiema kolumnami. Pierwsza kolumna, dajmy na to ID_TAB, jest typu INT Not null i primary key.
W bazie danych jest ustawiony TRIGGER ktory dowolna podana wartosc zastepuje wygenerowana przez generator.

Kolejne rekordy dodaje z poziomu pisanego programu i komponentu IBQuery, do wlasciwosci SQL prowadzam np. taki kod:
INSERT INTO TABLICA VALUES(1,"COS");
ustawiam Active=true i wszystko sie ladnie wykonuje, nowy rekord jest wpisywany do bazy a wartosc 1 jest zamieniana na wartosc z generatora.
Moje pytanie jest takie... jak moge odzyskac wartosc wstawiona przez generator np. jak mam taki przypadek:

Mam dwie tablice KSIAZKA i AUTOR w tablicy KSIAZKA ID_KSIAZKI jest generowane tak jak wyzej ID_TAB i musze tez wstawic wartosc wygenerowana do tablicy AUTOR do komorki ID_KS (a do drugiej ID_AUTORA - identyfikator z innej tablicy - tablica AUTOR dziala jako lacznikowa w relacji wiele do wiele).
Z gory dziekuje za pomoc.
Pozdrawiam

Re: Odzyskanie wartosci generowanej w bazie

Nowy postNapisane: środa, 15 lipca 2009, 17:04
przez banita
to pytanie nie dotyczy programowania baz danych ale konkretnego silnika.
np: w postgresql mamy tzw sekwencje i z nich mozemy odczytac takowa wartosc. w mysql jest funkcja (nie pamietam nazwy) ktora zwraca ostatnio wstawiona wartosc. w przypadku firebirda(w interbase powinno byc tak samo) faktycznie nie ma typu z autoinkrementem tylko tzreba skozystac z INT i generatora a calosc spiac za pomoca triggera.

w przypadku firebirda i generatora aby uzyska ostatnia wygenerowana wartosc przez ten generator musisz wykonac zapytanie:

Kod: Zaznacz cały
SELECT GEN_ID(GNAZWA_GENERATORA, 0 ) FROM RDB$DATABASE

w wyniku dostaniesz ostatnio wygenerowana wartosc.

Re: Odzyskanie wartosci generowanej w bazie

Nowy postNapisane: środa, 15 lipca 2009, 17:09
przez mentalmesh
dzieki wielkie :)