为什么EXISTS()总是返回true?

时间:2018-02-21 07:47:27

标签: mysql sql sql-update

这是我的查询(在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

enter image description here

正如您所看到的,我的查询是一个UPDATE语句,问题是,它永远不会发生。根据一些测试,该问题与EXISTS有关。当我删除它时,UPDATE就会发生。

无论如何,为什么EXISTS一直都是真的?即使views_profile表中没有任何行?

1 个答案:

答案 0 :(得分:1)

您正在TRIGGER使用AFTER INSERT,因此新行可在UPDATE上找到(可在EXISTS上找到)。您可以将时间更改为BEFORE