|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Банальный вопрос...
Прошу прощения если повторюсь но суть вопроса следующая.
Возможно ли добавление с помощью Query записи в несколько связанных таблиц. Проблема в следующем есть схема БД. В приложении форма для заполнения и данные в из этой формы должны записываться в разные таблицы. Если быть точным то в 4 одновременно ну и соответственно без нарушения связей базы. Как реализовать ума не приложу. С помощью Table в принципе понимаю только не знаю как работать с ключевыми полями. Если не трудно объясните пожалуйста.... |
#2
|
|||
|
|||
Для этого сущесвует несколько способов.
Собственно, если перефразировать задачу, то надо не то, что бы за один запрос вставить данные в несколько таблиц, а просто обеспечить вставку либо всех данных, либо никаких. Способ первый, применяемый достаточно редко - создание view с тригерами на insert и update (ну и delete). Недостатки: 1. Надо поддерживать дополнительные объекты в БД. 2. Не всегда возможно применение (в зависимости от струкруры данных). Способ второй. Хранимая процедура. Все действия выполняются одним вызовом с клиента. Однако, опять же требуется поддержка доп. объекта, да и при большом кол-ве параметров имеет место быть некоторое неудобство. Способ третий. Транзакция. Позволяет выполнить несколько запросов как один. Т.е. если где-то происходит ошибка, то просто откатывается вся транзакция и получается, как будто бы ничего не делали. |
#3
|
|||
|
|||
Про транзакции я слышал. Именно это и пришло в голову. Но как реализовать не знаю если не трудно то можно пример....
По моей схеме БД. Суть транзакции: добавление записи в таблицу Uvedomlenie и двух связанных с ней таблиц Rels и Defp Буду очень благодарен особенно если по подробнее объясните как первичный ключ из главных поместить в подчиненную.... |
#4
|
||||
|
||||
Подобную проблему я как-то решал. Использовал 2 метода:
1. Можно написать хранимую процедуру, передавать в нее параметры добавляемых данных, и внутри нее реализовывать логику добавления. 2. Создать модуль-парсер, в который будет загружаться последовательность команд insert/update и выполняться в определенной последовательности, следуя логике БД. |
#5
|
||||
|
||||
Цитата:
Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#6
|
|||
|
|||
спасибо большое. А пример хоть какой нибудь не подскажите?
|
#7
|
|||
|
|||
А открыть секрет, какая СУБД у нас - сложно?
|