@immelnikoff
Изучаю БД

Почему SELECT возвращает больше одного значения (MySQL 8.0)?

На сервере MySQL 8.0 имеется простая функция для записи в таблицу xxx с уникальным ключом (download_date, download_time):
CREATE function `insert_xxx` (_reason varchar(25), _download_date date, _download_time time) returns int unsigned
BEGIN
declare _id int unsigned;
insert ignore into xxx(reason, download_date, download_time) value(_reason, _download_date, _download_time);
select id into _id from xxx where download_date = _download_date and download_time = _download_time;
return _id;
END

Проблема в том, что при попытке записи уже имеющейся строки в таблице, функция должна просто возвращать id этой записи (insert ignore), но на самом деле возникает ошибка:
ERROR 1172 (42000): Result consisted of more than one row.
При этом таблица после такого вызова функции никак не меняется, как и должно быть.
В чем может быть проблема?

PS. Поле id является первичным ключом.
  • Вопрос задан
  • 387 просмотров
Пригласить эксперта
Ответы на вопрос 1
VladimirAndreev
@VladimirAndreev
php web dev
download_date+download_time - уникальная связка?
Ответ написан
Ваш ответ на вопрос

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

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