MySQL не разпознава израз, започващ с ключовата дума IF
като валиден SQL израз.
IF
изразът работи само в контекста на съставен израз (тоест блок от изрази, затворен между BEGIN
и END
. Понастоящем съставният израз се поддържа само в контекста на съхранена програма (запомнена процедура, функция или тригер.)
http://dev.mysql.com/doc/refman /5.5/bg/begin-end.html
За тестване опитайте...
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;
(ЗАБЕЛЕЖКА:Тук не препоръчвам транзакциите да се обработват вътре в съхранена процедура. Моето лично предпочитание е да НЕ правя това, а вместо това да обработвам транзакции на по-високо ниво. Но примерът по-горе трябва да работи; Вярвам, че MySQL поддържа извикване START TRANSACTION , COMMIT и ROLLBACK в контекста на съхранена процедура.)