因为我无法在任何地方找到这样的东西,所以我猜它不太可能。只是为了确定我认为我在这里问它。
我有一个包含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进行数据库映射,所以如果我能以某种方式将其定义为关系,那么它也会没问题。
我试着尽可能清楚地解释我的问题,如果不清楚,请在评论中告诉我。提前谢谢。
答案 0 :(得分:1)
要完全按照自己的意愿行事,可以创建TRIGGER
。为了获得有些类似的结果,您可以在此表上创建一个包含此计数的额外列的视图。
我非常喜欢第二个选项,因为它可以防止将冗余数据插入到数据库中,并且无需触发器,如果您意识到触发器很快就会变成性能和维护噩梦,那就很好了。 / p>
答案 1 :(得分:0)
由于我在这里使用Doctrine2,一个更好的方法可能是使用Lifecycle事件而不是TRIGGER。 http://doctrine-orm.readthedocs.org/en/latest/reference/events.html