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.)
http://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.)