Я пытаюсь создать запрос, который выполняет три предложения, но я думаю, что это невозможно, верхние его два, проблема в том, что у меня есть две таблицы, одна называется current_products, а другая - finished_products, как только продукт завершено данные, которые находятся в таблице current_product, передаются в таблицу finished_products, это будет:
$query = self::connect()->prepare(
"INSERT INTO `finished_products`
(room, name, lot, quantity_packed, pallet)
SELECT room, name, lot, quantity_to_package, finished_pallets
FROM `current_products`
WHERE `room`=:room
);
$query->execute(["room"=>$room]);
после передачи, я хочу удалить данные из таблицы current_product, где комната такая же комната, которую я прохожу, что-то вроде этого:
$query = self::connect()->prepare(
"INSERT INTO `finished_products`
(room, name, lot, quantity_packed, pallet)
SELECT room, name, lot, quantity_to_package, finished_pallets
FROM `current_products`
WHERE `room`=:room;
DELETE * FROM `current_products` WHERE `room`=:room;"
);
$query->execute(["room"=>$room]);
, но, как я уже сказал, это не работает и не возможно, я думал создать триггер, который выполняется в таблице finished_products после того, как он выполнит предложение INSERT в нем , что-то вроде этого:
CREATE TRIGGER DELETECURRENTPRODUCT_AI AFTER INSERT ON `finished_products` DELETE * FROM `current_products` WHERE room = new.room
, но он всегда говорит мне, что есть ошибка, близкая к DELETE, поэтому я не знаю, как синтаксис, я пробовал много способов, но, похоже, не работает, другие люди говорили мне использовать транзакции, но видя это, это похоже на выполнение двух запросов один за другим один, например:
$query = self::connect()->prepare(
"INSERT INTO `finished_products`
(room, name, lot, quantity_packed, pallet)
SELECT room, name, lot, quantity_to_package, finished_pallets
FROM `current_products`
WHERE `room`=:room);
$query->execute(["room"=>$room]);
$query = self::connect()->prepare("DELETE * FROM `current_products` WHERE `room`=:room);
$query->execute(["room"=>$room]);
разница в том, что он откатится, если есть ошибка, но для того, что я пытаюсь сделать, я не думаю, что мне нужно использовать транзакции, есть ли способ сделать это? спасибо :)