gpt4 book ai didi

mysql - 为什么相反的操作 <> 对触发器不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:55 25 4
gpt4 key购买 nike

我有一个触发器,它是 AFTER UPDATE。我有一个条件不起作用,我该如何解决?

$$
BEGIN
IF NEW.colname <> OLD.colname THEN
DELETE FROM tableX WHERE id = OLD.id;
END IF;
END
$$

应该注意的是,如果我编写此 IF 1 THEN,则 DELETE 查询有效。所以问题是那个条件。有什么问题吗?


正如 @Darwin von Corax 在评论中所说,当其中一个 NEW.colnameOLD.colnamenull 时,则所有该条件都返回 false。所以我想知道如何创建这样的条件?

Null <> 10        -- true
Null <> Null -- false
10 <> 12 -- true
32 <> Null -- true
3 <> 3 -- false

最佳答案

如果 NEW.colnameOLD.colname null ,然后 <>将返回 null if将与 false 相同.

幸运的是,有一个解决方案:<=> (NULL 安全相等)运算符,返回 1如果两个操作数都是 null 0如果只有一个。表达式

IF NOT (NEW.colname <=> OLD.colname) THEN

应该做你需要的。

关于mysql - 为什么相反的操作 <> 对触发器不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36143519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com