![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Реляционные БД [Paradox]
Vlad_Dyachkov © (2004-08-23 14:58:00)Возможно вопрос чайника, но я очень поверхностно знаком с реляционными БД...
Почитал теорию реляционных баз данных и возник вопрос по поводу их практического использования. К примеру есть две таблицы:
[Authors]
- AuthorID(Int, Key, AutoInc)
- AuthorName(Str)
[Books]
- BookID(Int, Key, AutoInc)
- AuthorID(Int)
- BookName(Str)
Необходимо добавить в базу Автора и книгу на этого автора. В данный момент это делаю следующим способом:
Сначала добавляю автора:
INSERT INTO [Authors] (AuthorName) VALUES ('Лев Толстой')
Затем иду в конец таблицы, считываю ID того автора, что добавил только что, и только затем точно таким же образом
выполняю добавления книги на этого автора.
А возможно ли одним запросом или более упрощенным способом добавлять в базу автора и сразу необходимую книгу на него?..
3APA3A (2004-08-23 22:50:00) [1]Исходя из определений
1) РСУБД рассматривает таблицу как множество некоторых элементов
2) У множества нет понятия "порядковый номер".
1) + 2) Выражение "конец таблицы" не имеет смысла...
Vemer (2004-08-23 19:58:00) [2]Вариант:
Если база 1-пользовательская - получи в начале следующий номер (напримерSelect Max(Authors_ID_Field) + 1 From Authors) в переменную, потом вставляй это значение в авторов и в книги. Так по крайней мере номер выуживать не надо.. А потом можно переменную просто увеличивать на 1, до конца "сеанса связи" :).
Digitman (2004-08-23 15:21:00) [3]
> Затем иду в конец таблицы
разберись с понятием "конец таблицы" - это крайне важно
Карелин Артем (2004-08-23 15:10:00) [4]Я хранимыми процедурами в FB для этого пользуюсь. В твоем случае смысла нет пыхтеть над такими вещами.
vovchik (2004-08-23 15:09:00) [5]Утверждать не буду, но мне кажется нет. Ты же сначала должен выполнить запрос и по окончанию выполнения получить значение в таблице1 по которому ты дальше вставляешь запись в другую таблицу2. Если ты напишешь один запрос на вставку записей в две таблицы, то не закончив обработку таблицы1 ты уже пихаешь данные в таблицу2 относительно значения первой, а значения то ещё не присвоились в таблице1. Ты можешь вставить данные в две таблицы если у тебя уже есть какой то ID. По крайней мере у меня не получалось делать такой трюк какой ты хотишь.