Вы можете сделать это исключительно в MySQL, используя таблицу blackhole
и триггер
Настройка таблиц
Сначала создайте таблицу черной дыры, в которую вы собираетесь вставить, и память (или временную таблицу), в которую черная дыра будет перенаправлена.
CREATE TABLE Blackhole1 LIKE order_details ENGINE = BLACKHOLE;
CREATE TABLE temp_order_results LIKE order_details ENGINE = MEMORY;
Настройка триггера
Теперь создайте триггер в таблице blackhole, который перенаправит вставку в таблицу памяти, дублируя строки с помощью qty > 1
.
DELIMITER $$
CREATE TRIGGER ai_Blackhole1_each AFTER INSERT ON blackhole1 FOR EACH ROW
BEGIN
DECLARE ACount INTEGER;
SET ACount = new.qty;
WHILE ACount > 1 DO BEGIN
INSERT INTO temp_order_results
VALUES (new.id, new.order_id, new.product_id, 1, new.price)
SET ACount = ACount - 1;
END; END WHILE;
END $$
DELIMITER ;
Заявления для выполнения запроса
Теперь сделайте вставку .. выберите в черную дыру
INSERT INTO blackhole1
SELECT id, order_id, product_id, qty, price FROM order_details;
И выбор на temp_order_results.
SELECT id, order_id, product_id, qty, price FROM order_details;