有没有办法改变"计数器"行中更新后的列。
例如,在此架构中:
CREATE TABLE test
(`ID` int, `Name` varchar (20), `Counter` int);
INSERT INTO test
(`ID`, `Name`, `Counter`)
VALUES
(1, 'Will', 0),
(2, 'James', 0);
如果我想更新第二个结果:
UPDATE test
SET Name = 'John'
WHERE id = 2
我希望计数器也改为1。它是否与模式有关,比如ON UPDATE ......? (我不想用更新查询更新计数器)
如果可以的话,有没有办法在10天或一段时间后将计数器设置回0?
答案 0 :(得分:0)
使用触发器:
CREATE trigger inc_counter
BEFORE UPDATE ON test
FOR EACH ROW
SET new.Counter = new.Counter + 1
对于第二部分,在10天后重置计数器,您需要一个额外的列:
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
然后你可以做一个周期性的任务:
UPDATE test
SET counter = -1
WHERE last_updated < DATE_SUB(NOW(), INTERVAL 10 DAY);
您需要在此处将其设置为-1
,因为在更新期间触发器会添加1。