SQL WHERE EXISTS маскирует ошибки в подзапросе - PullRequest
0 голосов
/ 09 января 2019

Я выполняю запрос на обновление флага в таблице, который основан на проверке наличия значений в подзапросе, но когда подзапрос получает ошибку (делится на ноль), оператор EXISTS просто видит его как возвращенный и продолжается с обновлением.

, например

Update xxxx
Set Flagfield=1 
FROM xxxx
WHERE
EXISTS (
Select * FROM yyyy Inner join xxxx on xxx.ID = yyyy.id
WHERE yyyy.int1 / yyyy.int2 > 1)

Кто-нибудь еще сталкивался с таким поведением и можно ли его ожидать?

1 Ответ

0 голосов
/ 09 января 2019

Если я правильно понимаю ваш вопрос, то вы можете попробовать приведенный ниже код, просто добавьте проверку для int2 в инструкции where.

Update xxxx
Set Flagfield=1 
FROM xxxx
WHERE
EXISTS (
Select * FROM yyyy Inner join xxxx on xxx.ID = yyyy.id
WHERE (yyyy.int2 IS NOT NULL AND yyyy.int2 <> 0) AND (yyyy.int1 / yyyy.int2 > 1))
...