Внутри этой транзакции выполняется только последний оператор sql. Когда я тестирую SQL запросы по отдельности, они работают, но не внутри этой транзакции. Обе таблицы являются движком INNODB. Почему первые 2 SQL операторы не выполняются внутри транзакции? Я получаю сообщение о том, что запрос фиксируется, поэтому ошибки нет, но при проверке результатов она не работает.
DELIMITER //
CREATE PROCEDURE placeBet2(IN betSize DECIMAL(6,2), IN spread DECIMAL(6,2))
BEGIN
DECLARE sql_error INT DEFAULT FALSE;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET sql_error = true;
START TRANSACTION;
SET @minDate := (SELECT MIN(timestamp) FROM pendingBets p WHERE p.spread = spread * -1);
SELECT @minDate, betSize, spread;
-- Transfer bets over to completed
INSERT INTO completedBets
SELECT * FROM pendingBets WHERE spread = spread * -1 and timestamp = @minDate limit 1;
-- ONLY DELETE 1st IT MATCHES
DELETE FROM pendingBets WHERE spread = spread * -1 and timestamp = @minDate limit 1;
-- Add new wager to completed bets
INSERT INTO completedBets VALUES ((SELECT NOW()), betSize, spread);
IF sql_error = FALSE THEN
COMMIT;
SELECT 'THE TRANSACTION WAS COMMITED.';
ELSE
ROLLBACK;
SELECT 'THE TRANSACTION WAS NOT COMMITED.';
END IF;
END//
DELIMITER ;