@ortsuev33

Как лучше реализовать?

У меня есть две таблицы , в одной я вставляю одну запись а в другой 1 или более,
я написал функция в случае успешности первой (вставки в первую таблицу) то вставляю остальные ,второй запрос происходит в цикле foreach вызывая мою функцию(и каждый вызов функции происходит insertво вторую таблицу)
Какие недостатки в этом способе и как лучше реализовать?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 2
kawabanga
@kawabanga
Вы сами озвучили недостаток.
(и каждый вызов функции происходит insertво вторую таблицу)

К чему он может приводить? Да много к чему. К примеру, у вас приложение, которое работает с финансами. Вы загрузили 15 элементов из 70 и произошел сбой. Куда копать? что делать?
Решение - формировать одним запросом и сразу посылать его.

Читайте про транзакции, оберните вашу функцию в транзакцию.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Как уже сказали - такие операции скорее всего неделимые (транзакции) и правильный, человеческий способ - делать это на стороне сервера. Например вызывая stored procedure, которая в рамках begin transaction … end transaction выполнит (или не выполнит) все действия.

И богомерзкий с точки зрения sql цикл (foreach) будет не нужен.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы