Поиск:

Ответ в темуСоздание новой темы Создание опроса
> insert (master+detail), FireBird 
:(
    Опции темы
WhiteSpirit
Дата 5.10.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



Доброе время суток.

Подскажите возможно ли вместо использования Table (и методов Insert() и Post()) использовать Query (Insert).

то есть хочу вместо использования таблицы использовать запрос для вставки записи в БД (причем в БД 2 таблицы, связанные)
--------------------
To beer or no to beer
PM MAIL   Вверх
bas
Дата 6.10.2005, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Можно.
Два запроса 1-ый в главную , 2-ой в подчиненную
PM MAIL   Вверх
WhiteSpirit
Дата 6.10.2005, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



а подскажите как их связать то?

что то типа
Код

INSERT INTO Table1, Table2 VALUES (...) WHERE ID_T1=ID_T2 
?
или как?
--------------------
To beer or no to beer
PM MAIL   Вверх
mo3art
Дата 6.10.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 29.9.2005
Где: пло не та 3 емля

Репутация: нет
Всего: нет



так не покатит!
надо что-то типа:
Код

INSERT INTO Table1 VALUES (,,,)
INSERT INTO Table2 VALUES (,,)

- если ID_T1 и ID_T2 известны заранее. Если связка по автономеру, тогда перед вторым инсертом надо выловить последний вставленный ID запросом типа:
Код

SELECT ID_T2 = MAX ( ID_T1 )

- в этом случае необходимо все изменения делать внутри транзакции, если система не однопользовательская.
PM MAIL   Вверх
WhiteSpirit
Дата 6.10.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



Уаууууу клёва. Огромный респект mo3art.

Правда говорят... всё гениальное просто.
--------------------
To beer or no to beer
PM MAIL   Вверх
Nastya
Дата 11.10.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: нет
Всего: 44



Сорри, а для этой цели не лучше ли написать триггер в самой BD или встроенную процедуру.


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
mo3art
Дата 13.10.2005, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 29.9.2005
Где: пло не та 3 емля

Репутация: нет
Всего: нет



я написал SQL-операторы, а как их оформить: в виде батча или как хп это уже вопросы вкуса. К тому-же я никогда не работал с FireBird и понятия поэтому не имею поддерживает-ли она механизм хп или нет. Если при этом коннект к базе идёт через ODBC, то независимо от базы нормально работать с хп не получится... smile

Интересно, что ты имела ввиду насчёт триггера? для какой из двух таблиц его писать и как в него запихивать данные для второй таблицы? Очень интересно.... smile
PM MAIL   Вверх
xgm
Дата 13.10.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 10.8.2005

Репутация: нет
Всего: 1



Цитата(mo3art @ 13.10.2005, 09:24)
я написал SQL-операторы, а как их оформить: в виде батча или как хп это уже вопросы вкуса. К тому-же я никогда не работал с FireBird и понятия поэтому не имею поддерживает-ли она механизм хп или нет. Если при этом коннект к базе идёт через ODBC, то независимо от базы нормально работать с хп не получится... smile

Хранимые процедуры FB - поддерживает.
Вызвать через ODBC - можно (сразу оговорюсь: это извращение)

Например:
SELECT ХРАНИМАЯ_ПРОЦЕДУРА( ПАРАМЕТРЫ_ПРИ_НЕОБХОДИМОСТИ ) from RDB$DATABASE;
PM MAIL   Вверх
Nastya
Дата 14.10.2005, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: нет
Всего: 44



смотря какая у тебя хранимая процедура, возвращает ли она значения( еть ли в ней suspend).
Код давай в студию...


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
WhiteSpirit
Дата 15.10.2005, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



чё то я не догоняю, а разве в хранимых процедурах INSERT можно реализовать?
--------------------
To beer or no to beer
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0642 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.