如何在MySQL中保留行的计数器

时间:2012-02-19 02:40:38

标签: mysql sql triggers count

所以我有一个表让我们称它为foo,它在每一行中都有一堆信息,加上一个计数。我想要的是每次在表上完成插入时,每行的count变量应该增加1.事情是我会有很多相同的行进入(这就是我需要计数的原因)所以我正在做IGNORE命令,因为我不希望在我的表中有大量的重复项。

所以我的插件是这样的:

INSERT IGNORE INTO foo (blah, blah, count) 
VALUES ("blah", "blah", 1);

现在进行更新我正在做一个触发器:

CREATE TRIGGER fooCount BEFORE INSERT ON foo
FOR EACH ROW
BEGIN
  IF (new.blah1=new.blah2 and new.blah1=new.blah2) THEN
    SET new.count=new.count + 1;
  END IF;
END;

但是,这似乎不起作用。有没有人对如何做得更好有任何其他建议或帮助?

2 个答案:

答案 0 :(得分:0)

我不确定它是否可以在MySql中工作(编辑)。

尝试构建这样的SQL:

UPDATE Foo
    SET count = count + 1
    WHERE blah1 = 'blah' AND blah2 = "blah2"


IF @@ROWCOUNT = 0 
   BEGIN
      INSERT INTO foo(...) values(...)
   END

您需要修改我的代码才能在mysql中运行。在这里,您可以阅读所需的所有信息:

http://dev.mysql.com/doc/refman/5.0/en/if-statement.html

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_row-count

答案 1 :(得分:-1)

只需在插入之前执行一个简单的查询以获取最后的Count值,然后您的插入应该类似于:

INSERT IGNORE INTO foo (blah, blah, count) VALUES ("blah", "blah", "$lastcount+1");