MySQL ne reconnaît pas une instruction commençant par le mot-clé IF comme une instruction SQL valide.
Le IF L'instruction ne fonctionne que dans le contexte d'une instruction composée (c'est-à-dire un bloc d'instructions entre BEGIN et END . Actuellement, l'instruction composée n'est prise en charge que dans le contexte d'un programme stocké (procédure stockée, fonction ou déclencheur.)
https://dev.mysql.com/doc/refman /5.5/fr/debut-fin.html
Pour tester, essayez...
DELIMITER //
CREATE PROCEDURE usp_test_transaction()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
START TRANSACTION;
-- whatever DML operations and SELECT statements you want to perform go here
IF (1=1) THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END//
DELIMITER ;
CALL usp_test_transaction;
(REMARQUE :je ne préconise pas ici que les transactions soient gérées à l'intérieur d'une procédure stockée. Ma préférence personnelle est de NE PAS le faire, et plutôt de gérer les transactions à un niveau supérieur. Mais l'exemple ci-dessus devrait fonctionner ; je pense que MySQL prend en charge l'appel de START TRANSACTION , COMMIT et ROLLBACK dans le contexte d'une procédure stockée.)