Я выполняю транзакцию, но по какой-то причине, если одно из предложений неверно, оно просто проигнорирует его и выполнит следующее, используя MYSQL - XAMPP, вот код:
public static function finishpackage($room, $finish_date) {
$connection = self::connect();
$connection->beginTransaction();
try {
$query = $connection->prepare("INSERT INTO `finished_products`
(room, name, lot, quantity_packed, pallet, start_date) SELECT room, name, lot, quantity_to_package, finished_pallets,
start_date FROM `current_products` WHERE `room`=:room");
$query->execute(["room"=>$room]);
$query = $connection->prepare("UPDATE `finished_products` SET `finish_date`=:finish_date WHERE `room`=:room");
$query->execute(["finish_date"=>$finish_date, "room"=>$room]);
$query = $connection->prepare("DELETE FROM `current_products` WHERE `room`=:room");
$result = $query->execute(["room"=>$room]);
$connection->commit();
}catch(PDOException $e) {
$connection->rollBack();
return $e->getMessage();
}
}
например, если имя таблицы во втором предложении было неправильным, он не должен выполнять ни одно из них, но он просто игнорирует второе предложение и выполняет следующее, выполняя только предложения вставки и удаления, почему это происходит? , мой двигатель БД - INNODB, и я не знаю, есть ли другой способ записать транзакцию с INNODB вместо MyISAM, спасибо :)