列值已连续更改

时间:2015-03-27 03:38:25

标签: mysql

我有三列,Datastatuscount

Data       Status     count
----------------------------
 1         disable            
 2         disable            
 3         disable            

这是我的伪代码。count就像一个计时器:

每当count += 1启用时

table.status

首次运行如下:

Data       Status     count
----------------------------
 1         enable       1
 2         disable            
 3         disable

第二轮:

Data       Status     count
----------------------------
 1         disable       1
 2         disable            
 3         disable 

第三次运行:

Data       Status     count
----------------------------
 1         enable       2
 2         disable            
 3         disable 

我只是想在查询,程序或任何建议中做到这一点。

2 个答案:

答案 0 :(得分:1)

update table_name set status='enable', count=count+1 where id=1

对于禁用,请使用其他查询,而不更新计数字段。在启用之前,如果只有在从diabled更改时需要更新,请在更新前检查状态。非常简单的任务。

另一种解决方案可能是使用触发器。这是触发器的解决方案:

DELIMITER |

CREATE TRIGGER count_upd
  BEFORE UPDATE
  ON my_table
  FOR EACH ROW
BEGIN
        IF NEW.status = "enabled" and OLD.status = "disabled" THEN
            SET NEW.count = OLD.count+1;
        END IF;
END|

DELIMITER ;

答案 1 :(得分:0)

您可以使用触发器来比较状态。如果状态已更新并更改,则添加计数。所以是的,可以在SQL过程(触发器)中执行此操作。