Count не сохраняется в переменной в триггере MySQL

#mysql #triggers

#mysql #триггеры

Вопрос:

Я получаю очень странную проблему в триггере MySQL.

Значение Count не сохраняется в переменной. Ниже приведен мой код.

 DECLARE user_cnt INTEGER;
DECLARE company_id INTEGER;
... 
SELECT IF(COUNT(id) > 0, COUNT(id), -1) INTO @user_cnt
FROM user 
WHERE user_type = 'admin' AND `status` = 'enabled' AND company_id = @company_id;
 

Тогда @company_id как имеет допустимое целочисленное значение.

Здесь @user_cnt всегда возвращается -1 как значение.

Что можно сделать? Я что-то упустил?

Комментарии:

1. Вы уверены, что получаете записи для ваших условий?

2. @juergend, если не указано условие company_id, чтобы оно возвращало счетчик возврата. Но при задании условия company_id это не так. Для изменения значения я также сохраняю значение @company_id в одной таблице, чтобы убедиться, что я получаю значение в @company_id переменной, и это происходит.

3. Проблема заключается в имени вашей переменной company_id , которое сопоставляется со столбцом вашей таблицы во время запроса, поэтому вы не получаете никакого значения при использовании фильтра company_id. измените свою переменную на что-то другое, например temp_company_id

4. @AbhishekGinani, все еще не повезло. Я изменил его, temp_company_id но не получил count.

5. Предоставьте некоторые примеры данных. также есть ли у вас какое-либо значение в @company_id?