SQL Транзакция - выполняется только 1 из 3 операторов - PullRequest
0 голосов
/ 24 апреля 2020

Внутри этой транзакции выполняется только последний оператор 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 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...