PostgreSQLを学びたいと思っているときに問題が発生しています。 personという名前のリレーショナルオブジェクトを作成した後、プライマリ整数キーとpersonオブジェクトの配列からなるテーブルを作成しました。私は、この配列に行を挿入する方法だと感じていますが、オブジェクトの特定の列にもアクセスする方法がわかりません(例person.name)。PostgreSQLはユーザ定義オブジェクトの配列に挿入して選択します
現在のところ、行を挿入できる唯一の方法は次のとおりですが、私はそれが正しい人物オブジェクトの代わりに文字列オブジェクトを作成している可能性があると考えています。
INSERT INTO towns VALUES (0, '{"(bob,blue,springfield,33)"}');
参考のために私が作成したスキーマは次のとおりです。あなたがここに2つのこと、複合型person
のarray
としてフィールドタイプを組み合わせている
CREATE TYPE person AS (
name text,
favorite_color text,
hometown text,
age integer
);
CREATE TABLE towns (
town_id integer PRIMARY KEY,
people person[]
);
Gotcha、私は引用符とシングルクォートの解散感謝します!私はこの例を実行しようとしましたが、 '不正な配列リテラル:" {ROW( "bob"、 "blue"、 "springfield"、33)} "というエラーが発生しました。私はあなたがより完全に投稿したドキュメントを読んだ後に、複合型のインスタンスだけのテーブルを使っていくつかのテストを行いました。コンポジットタイプに挿入するためにあなたが言及した構造で、コンポジットフィールドにアクセスするためにフィールドをラップすると、完全に機能します! – Jdeggs
配列は二重ではなく一重引用符で囲む必要があることに注意してください – phobia82