2016-06-05 2 views
1

У меня есть база данных с 2 таблицами. Одна таблица содержит данные о ссылках (ссылки на задания), другая содержит голоса. Чтобы перейти на этап голосования, вам нужно 5 ссылок. В другой базе данных я должен изменить group_id, если у них есть 5 ссылок.MySQL Trigger on update

Я пытался использовать что-то, как показано ниже:

CREATE TRIGGER update_group AFTER UPDATE ON refs 
    FOR EACH ROW 
    BEGIN 
     IF (SELECT recruit_id from refs where count(refs) = 5) THEN 
     UPDATE users.members 
     SET group_id=10 
     WHERE member_id=recruit_id; 
    END; 

Это что-то вроде этого даже возможно? если это не сработает, мой отказ - использовать скрипт bash в задании cron, который запускается каждые 5 минут, но триггер кажется намного более эффективным (и мгновенным).

ответ

0

Вы можете использовать NEW. для ссылки соответственно затронутых recruit_id после изменения, выполните подсчет и обновите соответствующую таблицу.

CREATE TRIGGER update_group AFTER UPDATE ON refs 
    FOR EACH ROW 
    BEGIN 
     SELECT @refs_no := count(*) from refs where recruit_id = NEW.recruit_id 
     IF (@refs_no = 5) THEN 
     UPDATE users.members 
     SET group_id=10 
     WHERE member_id=NEW.recruit_id; 
    END; 
+0

благодарит за ответить! im получение этой ошибки 'У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса для использования рядом с '@refs_no Integer; SELECT @refs_no: = count (refs) from refs где recruit_i 'в строке 4 ' – driz

+0

@driz извините, что я плохо обновил запрос. – ydoow