例如,
UPDATE TBExample A
SET A.colExpl = A.colExpl
如果输入的值相同Mysql更新时会忽略该列的值吗?
这是我在评论中所说的一个清晰的例子 - 如果有
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
上查看它的实际效果