|
2 / 2 / 0
Регистрация: 25.05.2009
Сообщений: 105
|
|
Ключевое поле для нескольких таблиц25.05.2009, 10:21. Показов 2596. Ответов 10
Метки нет (Все метки)
Доброго всем времени суток!
Разрабатываю приложение с базой данных в C++builder и столкнулся со следующей проблемой: Есть 3 таблицы, которые должны быть связаны по ключевому автоинкрементному полю ID. В главной таблице этот ключ задается с помощью генератора. А вот в остальные таблицы этот ключ почему-то не заносится. Для работы с БД использую Interbase, соответственно набор компонентов в Builder'e InterBase. На форме лежат IBDatabase, IBTransaction и по 3 IBQuery, IBDataSet и DataSource. Автоматически сгенерированный запрос InsertSQL в IBDataSet для зависимой таблицы такой: insert into HOSPITAL (ADDRESS, ID, OTDELENIE, PALATA) values (:ADDRESS, :ID, :OTDELENIE, :PALATA) Подскажите пожалуйста как и в какой последовательности следует соединить компоненты, если дело в этом. Или как изменить SQL-запрос на добавление, если дело в этом. Ну или что еще сделать, чтобы все это хозяйство заработало ![]() Заранее спасибо!
0
|
|
| 25.05.2009, 10:21 | |
|
Ответы с готовыми решениями:
10
Вычисляемое поле из нескольких таблиц Ссылка на поле t2.paymentTotal может относиться к полям нескольких таблиц |
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 25.05.2009, 10:31 | |
|
я в зависимые таблицы записи руками заношу в триггерe на событие Insert
0
|
|
|
2 / 2 / 0
Регистрация: 25.05.2009
Сообщений: 105
|
|
| 25.05.2009, 10:53 [ТС] | |
|
VoodooMan
Извини за назойливость, а можешь примерно написать текст триггера? Я новичок в этом деле, никогда с ними не сталкивался. Огромное спасибо!
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
||||||
| 25.05.2009, 11:17 | ||||||
Сообщение было отмечено как решение
Решение
Karull, у меня есть под оракл, может выручат:
а вообще вы это можете делать и без триггеров, просто сформировать и вызвать два запроса на insert
0
|
||||||
|
2 / 2 / 0
Регистрация: 25.05.2009
Сообщений: 105
|
|||||||||||
| 25.05.2009, 23:31 [ТС] | |||||||||||
|
Ну вот я создал три простеньких триггера, по одному на каждую таблицу:
Поле GeneratorField элемента IBDataSet не стал заполнять, поскольку полагаю, что триггер будет заполнять его автоматически. Запрос InsertSQL для главной таблицы выглядит так:
0
|
|||||||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 26.05.2009, 00:11 | |
|
так по идее тебе надо либо NULL передавать, либо вообще id в запросе не использовать
0
|
|
|
2 / 2 / 0
Регистрация: 25.05.2009
Сообщений: 105
|
|||||||||||
| 26.05.2009, 19:29 [ТС] | |||||||||||
|
Исключение из InsertSQL поля ID не помогло. Теперь запрос выглядит так:
Может быть дело в обработчике нажатия кнопки. Код такой:
0
|
|||||||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
||||||
| 26.05.2009, 19:40 | ||||||
|
Karull, я вот так генерю новое значение:
0
|
||||||
|
2 / 2 / 0
Регистрация: 25.05.2009
Сообщений: 105
|
||||||
| 26.05.2009, 23:29 [ТС] | ||||||
|
Это, насколько я понимаю, SQL-код
![]() А насчет генерации нового значения, вы имеете в виду, что строка с Insert() должна быть куда-то перемещена? Генератор GENID генерит новое значение по событию "On New Record". То есть по вызову как раз функции Insert(), я полагаю.
Еще раз дико извиняюсь за назойливость, но уж больно хочется научиться
0
|
||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 26.05.2009, 23:41 | |
|
ну судя по вашему триггеру, вы после добавления записи пытаетесь генерить ей код, поэтому и не нравится базе такое, тем более если ключ указан как обязательно непустой
да ничего хитрого в моем запросе. просто беру максимальный в данный момент и прибавляю 1, вот тебе новый код. проверено, работает в многопользовательском режиме...
0
|
|
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
|
| 27.05.2009, 08:30 | |
|
Можно использовать ГУИД (GUID) вместо идентификатора ...
0
|
|
| 27.05.2009, 08:30 | |
|
Помогаю со студенческими работами здесь
11
Объединение нескольких таблиц, содержащих поле с типом данных "Вложение" ключевое поле Ключевое поле Ключевое поле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|