6
  • PostgreSQL 9.1
  • 分割されたテーブル
    • tbl_master
    • tbl_slave1 (マスターを継承)
    • tbl_slave2 (マスターを継承)
  • Yii フレームワーク 1.1.10

誰かが Yii + PostgreSQL パーティション テーブルについての経験を共有できるかもしれません。パーティション化されたテーブル、チェック、およびトリガーを備えた PostgreSQL の部分はうまく機能しますが、Yii にこれらのテーブルを気に入ってもらうことはできません..

問題は、パーティション化されたテーブルへの挿入時にPostgreSQLが提供0 rows affectedすることであり、これを回避する方法がわかりません。Yii モデルは、新しいレコードが保存されていないと見なし (保存されています)、$Model->save();false を返すためafterSave()、機能していません。

他のすべての方法はうまく機能し->find()ています。->findAll()今保存したレコードを更新しても、すべて問題なく実行さafterSaveれます。問題は->save()一部だけです。 新しい行を挿入するときにのみトリガーがあるため、更新が機能します

トリガーを使用して、新しいデータをテーブルごとに分割しています。slaveおそらく、トリガーを変更して、新しいデータをテーブルに転送していないことを postgres が認識できるようにする必要がありmasterますか?

もう一つ。テーブルに主キーを追加したmasterので、Yii モデル (CActiveRecord) は pk のないテーブルについてエラーをスローしません。ドキュメントがこれを示唆していないことは知っていますが、このように機能しました。自分の状況の全体像を伝えようとしているだけです。

ありがとう!

4

1 に答える 1

2

代わりにルールを使用してみてください。クエリを書き換えると、影響を受ける行の正しい数が返されることが期待されます。ほとんどの場合、トリガーの方が優れていますが、マスターテーブルにデータを挿入して再度削除するよりもルールの方が優れていると思います。

これについては、このマニュアル ページのパラグラフ 5.9.5 で説明されています。

于 2012-10-28T06:40:04.287 に答える