MySQL nerozpozná příkaz začínající klíčovým slovem IF
jako platný SQL příkaz.
IF
příkaz funguje pouze v kontextu složeného příkazu (tj. bloku příkazů uzavřených mezi BEGIN
a END
. V současné době je složený příkaz podporován pouze v kontextu uloženého programu (uložená procedura, funkce nebo spouštěč.)
http://dev.mysql.com/doc/refman /5.5/en/begin-end.html
Pro testování zkuste...
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;
(POZNÁMKA:Neobhajuji zde, aby transakce byly zpracovávány uvnitř uložené procedury. Moje osobní preference je NEDĚLAT to a místo toho zpracovávat transakce na vyšší úrovni. Ale výše uvedený příklad by měl fungovat; věřím, že MySQL podporuje volání START TRANSACTION , COMMIT a ROLLBACK v kontextu uložené procedury.)