我想知道当该行点击更新时是否可以自动更新行中的某个数字(+1)。
类似的功能,如新ID记录的自动递增。但取决于行的变化。
Data sample
id ; column1; n_changes
1 ; pedro ; 1
当我更新表时 set column1 = 'hugo' WHERE id = 1
Data sample
id ; column1; n_changes
1 ; hugo ; 2
当然,第一个答案可能是 - 将此数字的更新放入查询中,但我有理由尝试在数据库自身上解决它。 我使用的是 Mysql 5.6 或 MariaDB。
最佳答案
对于此类操作,如果您希望自动完成,通常建议使用触发器。
但是,这很容易包含在update
中本身:
update table
set column1 = 'hugo',
n_changes = n_changes + 1
where id = 1 and column1 <> 'hugo';
请注意包含 column1 <> 'hugo'
在 where
。如果值没有改变,MySQL实际上不会更新记录。我的猜测是,如果该值保持不变,您也不想增加计数器。
编辑:
触发器非常简单:
DELIMITER $$
CREATE TRIGGER ins_sum BEFORE UPDATE ON t
FOR EACH ROW
BEGIN
SET new.n_changes = new.n_changes + 1;
END;
DELIMITER ;
记得填写n_changes
NOT NULL
默认值为 0。
关于Mysql更新按行更新数自动计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48852836/