@MasterCopipaster

Почему запрос в хранимой функции возвращает больше одной строки когда там одна строка?

FUNCTION isLogin(api_key varchar(36),product_id varchar(36)) RETURNS int
BEGIN
DECLARE last_request_time int;
SET last_request_time = (SELECT request_time from connections_mt where `api_key` = api_key and `product_id` = product_id);
return 1;
END

Возвращает ошибку если в таблице больше 1 записи
Subquery returns more than 1 row


Но прикол в том что столбцы api_key и product_id
UNIQUE KEY `UNIQ_E9A088ECC912ED9D4584665A` (`api_key`,`product_id`)


То есть там не может быть больше 1 записи, к тому же чистый sql запрос не в функции возвращает 1 запись.
Ошибка "Subquery returns more than 1" row возникает именно когда используешь хранимую функцию - но почему? и как это полечить?
  • Вопрос задан
  • 31 просмотр
Решения вопроса 1
@MasterCopipaster Автор вопроса
Во общем, как мне объяснили, такое поведение происходит потому что мускуль не знает сколько он выборки получит по запросу, и сразу выдает ошибку, надо явно указать limit 1 что бы это работало.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы