LINUX.ORG.RU

Сложные условия в процедурах\триггерах MySQL

 , , ,


0

1

Есть такой вот триггер

DELIMITER //
CREATE TRIGGER `change_status_to_failed` AFTER UPDATE ON `tasks_dicts` 
FOR EACH ROW 
BEGIN
   	DECLARE dicts_count INT;
	DECLARE stat INT;

	SELECT COUNT(*) INTO dicts_count FROM (SELECT * FROM tasks_dicts WHERE status NOT IN ('1') AND net_id=NEW.net_id) as alias;
	IF (dicts_count=0) THEN
		UPDATE tasks SET status='3' WHERE id=NEW.net_id;
		UPDATE tasks SET forDelete='1' WHERE id=NEW.net_id;
	END IF;
	SELECT status INTO stat FROM tasks WHERE id=NEW.net_id;
	IF (dicts_count!=0 AND stat='3') THEN
		UPDATE tasks SET status='0' WHERE id=NEW.net_id;
	END IF;
END
//
DELIMITER ;

Второе условие никак не хочет работать. Переписывал как два вложенных условия, результат один - не работает. ЧЯДНТ?

P.S. Естественно все запросы валидные. Не работает только второй if, первый все выполняет.



Последнее исправление: AtomicMan (всего исправлений: 3)
Ответ на: комментарий от anonymous

Error Code: 1422. Explicit or implicit commit is not allowed in stored function or trigger

AtomicMan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.