MySQL genkender ikke et udsagn, der begynder med søgeordet IF
som en gyldig SQL-sætning.
IF
sætning virker kun i konteksten af en sammensat sætning (det vil sige en blok af sætninger indesluttet mellem BEGIN
og END
. I øjeblikket understøttes den sammensatte sætning kun i sammenhæng med et lagret program (lagret procedure, funktion eller trigger).
http://dev.mysql.com/doc/refman /5.5/da/begin-end.html
For at teste, prøv...
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;
(BEMÆRK:Jeg går ikke ind for her, at transaktioner skal håndteres inde i den lagrede procedure. Min personlige præference er IKKE at gøre dette, og i stedet håndtere transaktioner på et højere niveau. Men eksemplet ovenfor burde fungere; jeg mener, at MySQL understøtter kaldet START TRANSACTION , COMMIT og ROLLBACK inden for konteksten af en lagret procedure.)