По моему опыту, стандартного способа не существует, но есть обходные пути, которые зависят от структуры ваших таблиц / базы данных.
Я не уверен, что Access поддерживает триггеры, SP и функции. Я считаю, что нет, поэтому следующие обходные пути не действительны, если это правда.
Вы можете использовать триггер для дочерней таблицы, но если у вас есть ограничения внешнего ключа, которые не будут работать, так как вы можете в конечном итоге вставить значения в дочернюю таблицу, которых нет в родительской. Наличие триггера для родителя бесполезно, поскольку вы не можете передавать аргументы триггерам.
Еще один обходной путь может заключаться в том, что вы вызываете процедуру сохранения из вашего внешнего приложения, а из этой процедуры хранения вы вызываете несколько операторов вставки. Однако из вашего вопроса я не делаю вывод, что вы не готовы сделать это, поскольку в вопросе говорится «из единого оператора вставки».
Еще один обходной путь - это то, что похоже на триггерный подход, который заключается в определении функции, и вы можете вызывать функцию из запроса вставки. С помощью функции вы вставляете данные в дочернюю таблицу. Но опять же, если есть какое-либо ограничение целостности, вы можете столкнуться с той же проблемой, что и в случае триггеров. Поскольку функции будут запускаться в первую очередь до того, как произойдет вставка.
Еще один подход; создайте таблицу, которая представляет собой объединение полей из требуемой таблицы (для справки давайте назовем ее корневой таблицей). Затем вы определяете триггер для вставки в эту таблицу. Теперь вставьте записи в эту корневую таблицу и в триггер вставьте соответствующие поля в нужную вам таблицу. (Вам нужно будет использовать транзакции в триггерах для атомарности).
Предположим, у вас есть структура таблицы liek emp (empid, name); empContacts (ContactID, EmpID, номер); empAddress (AddressID, EmpID, адрес);
поэтому вы создаете другую таблицу, которая представляет собой объединение полей из emp, и empContacts называют его Rootemp (empid, name, contactctid, number, addressId, address);
Создайте триггер для этой таблицы и изнутри записей вставки триггера в таблицы emp, empContacts и empAddress с транзакцией.
Однако это обходной путь, поскольку вы можете видеть из внешнего интерфейса, что вы вызываете один оператор вставки, хотя база данных все еще вызывает несколько вставок.
Возможно, это не лучший вариант, потому что обходной путь никогда не должен быть.
PS: пример emp, empContact и empAdress может быть не очень удачным примером, но я надеюсь, что он действительно передал сообщение.