如果用自己的值更新列,什么也不会发生,不是吗?

问题描述 投票:0回答:1

例如,

UPDATE TBExample A
SET A.colExpl = A.colExpl

如果输入的值相同Mysql更新时会忽略该列的值吗?

mysql
1个回答
1
投票

这是我在评论中所说的一个清晰的例子 - 如果有

BEFORE UPDATE
触发器,那么确实可能会发生一些事情。

CREATE TABLE TBExample (colExpl INT);

INSERT INTO TBExample (colExpl) VALUES (1), (2), (3);

DELIMITER //

CREATE TRIGGER modify_colExpl BEFORE UPDATE ON TBExample
FOR EACH ROW
BEGIN
  SET NEW.colExpl = OLD.colExpl + 10;
END //

DELIMITER ;


UPDATE TBExample SET colExpl = colExpl WHERE colExpl = 2

SELECT * FROM TBExample;
colExpl
1
12
3

您可以看到与限制子句匹配的行已被修改,即使该命令看似无害(

SET colExpl = colExpl
)。

Fiddle

上查看它的实际效果
© www.soinside.com 2019 - 2024. All rights reserved.