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

标签 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
)

触发器:

enter image description here

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

无论如何,为什么EXISTS始终为真?即使 views_profile 表中没有任何行?

最佳答案

您正在使用 TRIGGERAFTER INSERT,因此新行可在 UPDATE 上使用(并且可以在 >存在)。您可以将时间更改为BEFORE

关于mysql - 为什么 EXISTS() 总是返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48900584/

相关文章:

SQL 返回落在期间和范围内的日期

mysql - mysql 语法错误 : Befor Update Trigger

mysql - 如何按时间范围对员工进行分组?

mysql - Group BY 子查询返回多于 1 行

php - 按下登录按钮后,我的 login_exec 文件没有重定向

sql - 重命名mysql中的表列

SQL Server 2014 - 模拟和 CTE 循环

MySQL 重复 'ID' = 0 并且无法将 AUTO_INCREMENT 放在

mysql - mySQL 更新查询中的语法错误

php - 如何在 android studio 的 TextView 中查看 PHP 输出