Для этого сущесвует несколько способов.
Собственно, если перефразировать задачу, то надо не то, что бы за один запрос вставить данные в несколько таблиц, а просто обеспечить вставку либо всех данных, либо никаких.
Способ первый, применяемый достаточно редко - создание view с тригерами на insert и update (ну и delete). Недостатки: 1. Надо поддерживать дополнительные объекты в БД. 2. Не всегда возможно применение (в зависимости от струкруры данных).
Способ второй. Хранимая процедура. Все действия выполняются одним вызовом с клиента. Однако, опять же требуется поддержка доп. объекта, да и при большом кол-ве параметров имеет место быть некоторое неудобство.
Способ третий. Транзакция. Позволяет выполнить несколько запросов как один. Т.е. если где-то происходит ошибка, то просто откатывается вся транзакция и получается, как будто бы ничего не делали.
|