我想知道当这一行点击更新时是否可以自动更新行中的某个数字(+1)。
类似的功能,如新ID记录的自动递增。但取决于行的变化。
Data sample
id ; column1; n_changes
1 ; pedro ; 1
当我做update table set column1 = 'hugo' WHERE id = 1
Data sample
id ; column1; n_changes
1 ; hugo ; 2
当然第一个答案可能是 - 将此号码的更新放入查询中,但我有理由尝试在db self上解决它。 我正在使用Mysql 5.6或MariaDB。
答案 0 :(得分:0)
执行更新时,只需增加n_changes
列:
UPDATE table
SET
column1 = 'hugo',
n_changes = n_changes + 1
WHERE id = 1;
答案 1 :(得分:0)
对于此类操作,如果您希望自动完成触发,通常建议使用触发器。
但是,这很容易包含在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。