Yii框架和PostgreSQL分区表 - 受影响的0行

时间:2012-05-10 12:32:52

标签: postgresql triggers yii partitioning

  • PostgreSQL 9.1
  • 分区表格
    • tbl_master
    • tbl_slave1(iherits master)
    • tbl_slave2(iherits master)
  • Yii framework 1.1.10

也许有人可以说他对Yii + PostgreSQL分区表有所了解。 带有分区表,检查和触发器的PostgreSQL部分工作得很好,但我不能让Yii 这些表..

问题是插入到分区表PostgreSQL给出0 rows affected,我无法弄清楚如何解决这个问题。 Yii模型认为新记录未保存(但确实如此)并且$Model->save();返回false,因此afterSave()无法正常工作等等。

->find()->findAll()等所有其他方法都运作良好。即使我刚刚更新保存的记录抛出yii一切正常,我也被执行afterSave。问题仅出在->save()部分。 更新工作,因为我只在插入新行时触发

我正在使用触发器按表拆分新数据。也许我需要修改触发器,以便postgres知道我将新数据转发到slave表而不是master

还有一件事。我将主键添加到master表,因此Yii Model(CActiveRecord)不会在没有pk的情况下抛出有关表的错误。我知道文档没有暗示这一点,但我得到了这种方式。只是试图给出我的情况大图片

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试使用规则作为替代方案。当它重写查询时,我希望它返回正确数量的受影响的行。虽然触发器在大多数情况下更好,但我认为规则比在主表中插入数据并且必须再次删除它更好。

this manual page上的第5.9.5段对此进行了介绍。