MySQL herkent geen instructie die begint met het trefwoord IF
als een geldige SQL-instructie.
De IF
instructie werkt alleen in de context van een samengestelde instructie (dat wil zeggen, een blok met instructies tussen BEGIN
en END
. Momenteel wordt de samengestelde instructie alleen ondersteund in de context van een opgeslagen programma (opgeslagen procedure, functie of trigger.)
http://dev.mysql.com/doc/refman /5.5/nl/begin-end.html
Probeer voor het testen...
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;
(OPMERKING:ik pleit er hier niet voor dat transacties binnen de opgeslagen procedure worden afgehandeld. Mijn persoonlijke voorkeur is om dit NIET te doen, en in plaats daarvan transacties op een hoger niveau af te handelen. Maar het bovenstaande voorbeeld zou moeten werken; ik geloof dat MySQL het bellen START TRANSACTIE ondersteunt , COMMIT en ROLLBACK binnen de context van een opgeslagen procedure.)