1

postgres9.2はjson列をサポートしています。postgresカラムに基づいて自動的にインデックスを作成するように拡張するための最良の方法は何でしょうかjson

例えば、

create table obj(
   obj_id    bigserial    primary key,
   col1      varchar(20),
   col2      date,
   obj       json
);
create index obj_col1 on obj( col1 );
create index obj_col2 on obj( col2 );

レコードが挿入または更新さcol1れ、列col2から設定されたとき。obj

基本的に、主キーとjson列自体を除くすべての属性は、jsonオブジェクトから自動的に設定されます。

相関関係として、名前を変更すると属性col1も更新され、そこで名前が新しい名前に変更されます。jsoncol1

catalogueおよびステートメントを使用して実行できますがexecute、罪のように遅くなります。

テーブルごとにトリガーを作成することで実行できますが、これは面倒でエラーが発生しやすくなります。

トリガーは継承できないため、継承によって達成することはできません。

extension行くための最良の方法ですか?それはどのように見えるでしょうか?


extensionpgはCREATETABLEまたはALTERTABLEのトリガーをサポートしていないため、これを行うために書き込むことはできません。

応急修理の唯一の提案は、DDLのログを記録し、ログを監視してから、プロシージャを実行することです。これは可能ですが、実際に必要なのは、CREATEおよびALTERTABLEのトリガーです。

4

1 に答える 1

1

jsonから「col1」をどのように導出するかは私にはわかりません。おそらくそれはあなたのjsonに依存します。

とにかく-最善のアプローチは、トリガーを書き込むスクリプトと、列の名前変更操作を書き込むスクリプトを作成することです。必要なパラメータを指定すると、plpgsqlコードが吐き出されます。

ああ-http://pgtap.org/も役立つかもしれません-これをすべてテストしたいと思うでしょう。

于 2012-06-15T07:32:04.710 に答える