Как заставить работать транзакцию в mysql? - PullRequest
0 голосов
/ 20 июня 2020

Я выполняю транзакцию, но по какой-то причине, если одно из предложений неверно, оно просто проигнорирует его и выполнит следующее, используя 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, спасибо :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...