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
Author: Borneq
Date: Tue, 18 Aug 2015 08:25
Date: Tue, 18 Aug 2015 08:25
17 lines
1716 bytes
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
Author: Borneq
Date: Tue, 18 Aug 2015 13:51
Date: Tue, 18 Aug 2015 13:51
10 lines
1330 bytes
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
Author: wloochacz
Date: Tue, 18 Aug 2015 14:42
Date: Tue, 18 Aug 2015 14:42
20 lines
1961 bytes
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