2016-08-12 4 views
0

私はDjangoで書かれたAPIによって使用されるpostgresにパーティションテーブルをまとめています。 Postgresには、多くの問題があります。そのほとんどは、NULLを返すSQLのRETURNING節や、重複したレコードを作成することです(詳細については、Google postgresパーティションに戻ります)。Django ORMのmodels.save()をオーバーライドしてストアドプロシージャを使用しますか?

解決策は、ストアドプロシージャまたはカスタムSQLを使用するためにORMのsave()メソッドをオーバーライドすることですが、着信する引数をカスタムSQLステートメントにマップするにはどうすればよいですか?

理想的にはthisのようになりますが、スーパーメソッドを呼び出す代わりに、argsをカスタムSQL文にマップします。

答えて

0

最も簡単な方法は、PostgreSQLサイトの挿入/更新の前にmake triggerを行うことです。

+0

私はすでにpostgresに[標準パーティション分割方式](https://www.postgresql.org/docs/9.1/static/ddl-partitioning.html)を使用しています。問題は、トリガ関数がNULLまたはNEWを返すことができることです。 NULLを返すと、RETURNING節もNULLを返します。 NEWを返すように設定した場合、RETURNING句は機能しますが、データは子の_and_親テーブルに挿入されます。 – jfarr

関連する問題