Мне нужно создать одну транзакцию / хранимую процедуру, которая принимает два списка внешних ключей и вставляет новые строки в таблицу из этих внешних ключей.
В частности, у меня есть таблица, в которой есть order_ids и item_idsв соответствии с заказом.Мне нужно добавить в эту таблицу при отправке заказов.
Чтобы подвести итог в коде, я хотел бы сделать:
DELIMITER ##
BEGIN
CREATE STORED PROCEDURE addOrder(IN itemIds VARCHAR(255), IN orderIds VARCHAR(255))
// ----- SQL Equivalent of -----
// for (int i = 0; i < itemIds.length; ++i)
// INSERT INTO Items_Ordered(item_id, order_id) VALUES(itemIds[i], order_ids[i]);
// -----------------------------
END ##
DELIMITER ;
Так что в Java, я мог бы тогда сделать что-то вроде:
String listOfItems = '1, 2, 6, 7, 8';
String listOfOrders = '2, 1, 99, 82, 7';
PreparedStatement ps = connection.prepareCall("CALL addOrder(" + listOfItems + ", " + listOfOrders + ")");
ps.executeUpdate();
Есть идеи?
РЕДАКТИРОВАТЬ # 1:
Мне очень, очень, очень не нравится это хакерское решение: Передать массив в сохраненныйпроцедура
РЕДАКТИРОВАТЬ # 2:
Другое решение, которое я думал, было создать временную таблицу в хранимой процедуре с вводом, но я также не знаю, как это сделать.