Почему EXISTS () всегда возвращает true?

0

Вот мой запрос (используется в TRIGGER):

update user_details
set views_profile = views_profile + 1
where user_id = new.user_id and not exists (
    SELECT 1
    FROM views_profile vp
    WHERE vp.user_id = new.user_id and vp.viewer_id = new.viewer_id
)

TRIGGER:

Изображение 174551

Как вы можете видеть, мой запрос является оператором UPDATE и проблема в том, что это никогда не происходит. Согласно некоторым испытаниям, проблема связана с EXISTS. Когда я удаляю его, произойдет UPDATE.

Во всяком случае, почему EXISTS все время? Даже если в таблице views_profile нет какой-либо строки?

  • 0
    Вам необходимо условие подзапроса, ссылающееся на таблицу внешнего запроса, то есть столбец user_details.
  • 0
    Я бы порекомендовал вам поделиться данными с таким запросом. попробуйте любой www.dbfiddle.uk или www.sqlfiddle.com
Показать ещё 2 комментария
Теги:
sql-update

1 ответ

1
Лучший ответ

Вы используете TRIGGER с AFTER INSERT чтобы новая строка была доступна в UPDATE (и может быть найдена на EXISTS). Вы можете изменить время до BEFORE.

  • 0
    а ну понятно. благодарю вас

Ещё вопросы

Сообщество Overcoder
Наверх
Меню