MySQL non riconosce un'istruzione che inizia con la parola chiave IF
come un'istruzione SQL valida.
Il IF
istruzione funziona solo nel contesto di un'istruzione composta (cioè un blocco di istruzioni racchiuso tra BEGIN
e END
. Attualmente, l'istruzione composta è supportata solo nel contesto di un programma memorizzato (procedura memorizzata, funzione o trigger.)
http://dev.mysql.com/doc/refman /5.5/it/inizio-fine.html
Per il test, prova...
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;
(NOTA:non sto sostenendo qui che le transazioni vengano gestite all'interno della stored procedure. La mia preferenza personale è NON farlo e invece gestire le transazioni a un livello superiore. Ma l'esempio sopra dovrebbe funzionare; credo che MySQL supporti la chiamata START TRANSACTION , COMMIT e ROLLBACK nel contesto di una procedura memorizzata.)