Tvoj_faker
@Tvoj_faker
местная фиеста из глубин далекого

Возможно ли в одном запросе сделать SELECT и INSERT?

Есть 2 простых запроса, можно ли отправить их одновременно, как один?
  • Вопрос задан
  • 879 просмотров
Пригласить эксперта
Ответы на вопрос 4
@dmitryKovalskiy
программист средней руки
Можно исполнить хранимую процедуру и сделать все что вы хотите. или сделать в рамках одной транзакции - два скрипта.
Ответ написан
Комментировать
kashamalasha
@kashamalasha
BEGIN
  SAVEPOINT bak_trn; -- опционально
  SELECT FROM ... ;
  INSERT INTO ... ;
EXCEPTION  -- опционально
   WHEN OTHERS THEN
      ROLLBACK TO bak_trn;
      RAISE;
END;
COMMIT;


Если ничего не жалко, и нечего ломать, можно и без сэйва и без роллбэка.
Ответ написан
Комментировать
@Mirocow
Пример 1

UPDATE
Table_A
SET
Table_A.token = CONCAT_WS(':', Table_B.category_id, Table_B.form_id, Table_B.mark_id, Table_B.model_id)
FROM
tbl_category_mark_model_form Table_A
INNER JOIN
tbl_category_mark_model_form Table_B
ON
Table_A.id = Table_B.id
;

Пример 2

UPDATE tbl_category_mark_model_form AS tbl_1
INNER JOIN(
SELECT * FROM tbl_category_mark_model_form
) AS tbl_2 ON tbl_1.id = tbl_2.id
SET tbl_1.token = CONCAT_WS(':', tbl_2.category_id, tbl_2.form_id, tbl_2.mark_id, tbl_2.model_id)
;

остальные примеры: docs.mirocow.com/doku.php?id=sql:mysql:update-someself
Ответ написан
Комментировать
igruschkafox
@igruschkafox
Специалист по сопровождению БД MS SQL
в MS SQL есть Output
возвращает заинсерченные строки в том числе присвоенные айдишники и гуиды ;)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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