使用mysql根据另一个表中的列计数更新列中的值

时间:2014-12-22 14:53:13

标签: mysql database doctrine-orm

因为我无法在任何地方找到这样的东西,所以我猜它不太可能。只是为了确定我认为我在这里问它。

我有一个包含2个表的数据库。让我们暂时将它们命名为表A和B.表B中有一堆项目,其中每个项目与表A中的项目有多对一的关系。现在表格AI中有一个字段,其中应包含表B中与该特定项目相关的项目数A中的项目 示例表A:

+----+------+---------+
| id | data | count_b |
+----+------+---------+
|  1 | blah |      2  |
|  2 | blah |      0  |
|  3 | blah |      1  |
+----+------+---------+

示例表B:

+----+------+--------+
| id | data | parent |
+----+------+--------+
|  1 | blah |      1 |
|  2 | blah |      1 |
|  3 | blah |      3 |
+----+------+--------+

现在我想知道是否有办法每次在B中插入行时自动更新表A中的列count_b?

我想只使用mysql来实现这一点。我的Web应用程序使用doctrine进行数据库映射,所以如果我能以某种方式将其定义为关系,那么它也会没问题。

我试着尽可能清楚地解释我的问题,如果不清楚,请在评论中告诉我。提前谢谢。

2 个答案:

答案 0 :(得分:1)

要完全按照自己的意愿行事,可以创建TRIGGER。为了获得有些类似的结果,您可以在此表上创建一个包含此计数的额外列的视图。

我非常喜欢第二个选项,因为它可以防止将冗余数据插入到数据库中,并且无需触发器,如果​​您意识到触发器很快就会变成性能和维护噩梦,那就很好了。 / p>

答案 1 :(得分:0)

由于我在这里使用Doctrine2,一个更好的方法可能是使用Lifecycle事件而不是TRIGGER。 http://doctrine-orm.readthedocs.org/en/latest/reference/events.html