Как вызвать исключение в запросе sql? postgresql

У меня есть запрос на селект. К примеру SELECT * FROM table1 WHERE id = 3 AND number > 5; Как мне сделать так, что если ни одна запись c id 3 не была найдена, выкинуть исключение или каким то другим образом оповестить клиента, что записи с таким id не существует?


Ответы (2 шт):

Автор решения: Мелкий

Запрос может вернуть 0 строк результата - это нормальное, штатное поведение запроса. Не надо это менять.

Это задача прикладного кода (того, который этот запрос и выполнял) - проверить сколько данных получено и корректно следовать необходимой логике. "запрос не нашёл данных" - это может быть индикатор неверного выполнения приложения и, в том числе, вызывать исключение на приложении. Но для СУБД это штатная ситуация. Обрабатывать это должно именно приложение.

→ Ссылка
Автор решения: Dmitry Ivanov

Я согласен с коллегой что в методах и функциях возвращающих данные не нужны исключения при отсутствии данных по указанному ключу это тупиковый путь во всех отношениях. Единственный путь программной генерации ошибок на стороне сервера это метод RAISE. Генерировать исключения в этих случаях лучше в среднем уровне бизнес логики но и здесь лучше возвращать пустые списки чем исключения. Если все таки критически важно знать о наличии данных по указанному ключу то я использую запросы типа check, с использованием команды EXISTS, возвращающие просто bool но это как правило бывает не часто.

→ Ссылка