SQL更改计数器ON UPDATE

时间:2014-04-18 19:55:35

标签: mysql sql

有没有办法改变"计数器"行中更新后的列。

例如,在此架构中:

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?

1 个答案:

答案 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。