我有一个表:ID,name,count,varchar(255)
现在,我想要的是每次更新表中的行时增加“计数”。
当然,简单的方法是首先读取,获取值,在php中增加1,然后使用新值更新。但!
有没有更快捷的方法呢? mysql中有一个系统可以自动执行++吗?比如autoincrement,但对于一个单独的实体呢?
答案 0 :(得分:11)
我看到两个选项:
只需将此逻辑添加到每个更新查询
UPDATE `table` SET
`data` = 'new_data',
`update_counter` = `update_counter` + 1
WHERE `id` = 123
创建一个自动完成工作的触发器:
CREATE TRIGGER trigger_name
AFTER UPDATE
ON `table`
FOR EACH ROW
BEGIN
UPDATE `table`
SET `update_counter` = `update_counter` + 1
WHERE `id` = NEW.id
END
答案 1 :(得分:2)
创建一个触发器: http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html
触发器是数据库在某些事件上“触发”的代码片段。在您的情况下,该事件将是一个更新。许多RDBMS支持触发器,MySQL也是如此。使用触发器的优点是,每次更新此实体的PHP逻辑都将隐式调用触发器逻辑,当您想要从不同的PHP逻辑更新实体时,您不必再记住它
答案 2 :(得分:0)
答案 3 :(得分:0)
UPDATE table SET name='new value', count=count+1 WHERE id=...
SQL更新可以使用正在更新的记录中的字段作为更新本身的数据源。