2015-04-10 2 views
0

У меня есть таблица с колонками id и name.Simple IF Statement в MySQL не работает

START TRANSACTION; 
UPDATE Test SET name='test' where id=1; 
SELECT ROW_COUNT() INTO @affected_rows; 
IF (@affected_rows > 0) THEN 
    COMMIT; 
ELSE 
    ROLLBACK; 
END IF 

Это, кажется, возвращается ошибка

У Вас есть ошибка в вашем SQL синтаксиса; в руководстве, соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи 'IF (affected_rows> 0) THEN COMMIT' в строке 1 0 сек

В настоящее время работает MySQL 5.6.22

+1

'If - else' может использоваться только в триггерах и процедурах. Вы используете какие-либо процедуры? –

ответ

2

Во-первых, if как выражение потока управления допускается только в программируемых блоках - хранимых процедурах, триггерах и функциях.

Во-вторых, логика не имеет смысла. Если строки не затронуты, нет необходимости откатывать транзакцию.

Чтобы указать на documentation:

IF заявление хранимых программ реализует основную условную конструкцию.

Термин «сохраненные программы» означает некоторый блок программирования. Не путайте этот if с функцией MySQL if(), которая может использоваться в запросе.