2015-03-24 2 views
0

Я использую этот следующий триггерPHPMYADMIN замерзает при применении Trigger

DELIMITER ; 
CREATE TRIGGER updateCount 
AFTER INSERT ON user_info 
FOR EACH ROW 
BEGIN 

UPDATE users SET counter=counter+1 WHERE users.id = (SELECT `user_info`.`bookmark_id` from `user_info` WHERE user_info.id = NEW.id) ; 

END; 
// 
delimiter ; 

EDIT:

я также использовал этот

delimiter // 
    CREATE TRIGGER updateCount 
    AFTER INSERT ON user_info 
    FOR EACH ROW 
    BEGIN 

    UPDATE users SET counter=counter+1 WHERE users.id = (SELECT `user_info`.`bookmark_id` from `user_info` WHERE user_info.id = NEW.id) ; 

    END; 
    // 
    delimiter ; 

Это работает отлично на моем местном. но на live phpmyadmin freezes

Есть идеи?

Благодаря

+2

* Hm .... *, не совсем уверен, но использование полуточки в качестве разделителя может быть не очень хорошей идеей. Попробуйте использовать что-то еще. ';' является директивой конца PHP скрипта. –

+1

@ Fred-ii- Вот именно, что здесь не так. – Daan

+0

что я должен использовать. пожалуйста, объясните –

ответ

1

Это должно работать для вас:

DELIMITER // 

DROP TRIGGER IF EXISTS updateCount// 
CREATE TRIGGER updateCount 
AFTER INSERT ON user_info 
FOR EACH ROW 
BEGIN 

UPDATE users SET counter=counter+1 WHERE users.id = (SELECT `user_info`.`bookmark_id` from `user_info` WHERE user_info.id = NEW.id); 

END// 

DELIMITER ; 
+0

По-прежнему висит ... –

+0

Должно возникнуть ошибка, какая из них? Попробуйте вставить запись в 'user_info' с помощью phpmyadmin, это даст вам ошибку. – Daan

+0

через 10 минут, это дало мне ошибку. Не удалось обработать запрос, Код ошибки 500 –

0

Я сомневаюсь, что разделители вызовет триггер повесить.

У вас есть показатели по user_info(id) и users(id)?

Альтернативная возможность заключается в том, что по какой-то причине users заблокирован.

Смежные вопросы