🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych
3 messages
3 total messages Started by Borneq Tue, 18 Aug 2015 08:25
Firebird: wiersz tymczasowy? i wartość pola autoincrement
#194564
Author: Borneq
Date: Tue, 18 Aug 2015 08:25
17 lines
1716 bytes
Do czego chciałbym mieć wiersz tymczasowy tabeli:
otóż mam tabelę BOOKS gdzie nie puste mają być TITLE,NUM_PAGES i 
CURRENCY. Dopóki ich się nie wypełni, nie można dodać wiersza do tabeli. 
Ale wcześniej ktoś może zechcieć dodać autora (może ich być kilku) do 
książki. Czyli w tabeli BOOKS_AUTHORS dodać wiersz, gdzie będzie numer 
autora ORAZ numer książki, czyli książka musi być już dodana (?), czyli 
albo uzupełnione tamte pola albo brak wymogu tych pól że nie null.
Ostatecznie mogę sprawdzać w programie zamiast wymagać to w tabeli.
Ale teraz mam SQL z parametrem:
select a.*
from books_authors ba
   join authors a on ba.author=a.id
where ba.book=:books;

parametr :books ma być równy BOOK.ID
jak odczytać ten ostatni BOOK.ID? może odczytać wartość generatora 
GEN_BOOKS_ID? ale jak?
Re: Firebird: wiersz tymczasowy? i wartość pola autoincrement
#194565
Author: Borneq
Date: Tue, 18 Aug 2015 13:51
10 lines
1330 bytes
W dniu 18.08.2015 o 10:25, Borneq pisze:
> parametr :books ma być równy BOOK.ID
> jak odczytać ten ostatni BOOK.ID? może odczytać wartość generatora
> GEN_BOOKS_ID? ale jak?

znalazłem (http://forum.lazarus.freepascal.org/index.php?topic=21240.0)
select gen_id(gen_books_id, 0) from rdb$database

a jak działać z polami, które nie mogą być null, gdy potrzeba wstawić do 
innej tabeli ID?
Re: Firebird: wiersz tymczasowy? i wartość pola autoincrement
#194566
Author: wloochacz
Date: Tue, 18 Aug 2015 14:42
20 lines
1961 bytes
W dniu 2015-08-18 o 15:51, Borneq pisze:
> W dniu 18.08.2015 o 10:25, Borneq pisze:
>> parametr :books ma być równy BOOK.ID
>> jak odczytać ten ostatni BOOK.ID? może odczytać wartość generatora
>> GEN_BOOKS_ID? ale jak?
>
> znalazłem (http://forum.lazarus.freepascal.org/index.php?topic=21240.0)
> select gen_id(gen_books_id, 0) from rdb$database
Tak się pobiera aktualną wartość generatora.
Drugi parametr funkcji gen_id to krok, a więc aby zwiększyć wartość 
generatora o 1 i równocześnie zwrócić jego wartość to będzie:

select gen_id(gen_books_id, 1) from rdb$database

> a jak działać z polami, które nie mogą być null, gdy potrzeba wstawić do
> innej tabeli ID?
Ano tak; pobrać to ID i wstawić do innej tabeli ID.

-- 
wloochacz
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads