MySQL tidak mengenali pernyataan yang dimulai dengan kata kunci IF
sebagai pernyataan SQL yang valid.
IF
pernyataan hanya berfungsi dalam konteks pernyataan majemuk (yaitu, blok pernyataan yang diapit di antara BEGIN
dan END
. Saat ini, pernyataan majemuk hanya didukung dalam konteks program tersimpan (prosedur tersimpan, fungsi, atau pemicu.)
http://dev.mysql.com/doc/refman /5.5/en/begin-end.html
Untuk pengujian, coba...
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;
(CATATAN:Saya tidak menganjurkan di sini bahwa transaksi ditangani di dalam prosedur tersimpan. Preferensi pribadi saya adalah TIDAK melakukan ini, dan alih-alih menangani transaksi di tingkat yang lebih tinggi. Tetapi contoh di atas seharusnya berfungsi; Saya yakin MySQL mendukung pemanggilan MULAI TRANSAKSI , COMMIT dan ROLLBACK dalam konteks prosedur tersimpan.)