web-dev-qa-db-ja.com

テーブルのid列をhstore列postgresに追加する

テーブルのid列をhstore列に格納する方法を理解しようとしています。このようにして、IDは2つの場所に保存されます。今後、テーブルは別のデータベースに移動され、現在のIDを保持する必要があります。

私が試してみました:

update new_table set hstore_col = hstore_col || hstore("id",id::text) where id = 1

これは機能しません。データベーステーブルのid列をhstore列に追加する他の提案はありません。

3
Kyle K

通常、SQLでは、テーブル、列、関数、その他のDBオブジェクトなど、名前に「非従来型」の文字が含まれている、または大文字と小文字を区別する必要がある識別子を指定するために使用される二重引用符。たとえば、正しいPostgreSQLステートメントです。

create table "This is#my...%TABLE" ("And&Field" int);

ただし、このような名前を使用することはお勧めしません多くの問題が発生する可能性があるため)

したがって、二重引用符で囲まれたリテラルはDBオブジェクトを意味し、ステートメントでは"id"idフィールドを意味します。

一方、標準SQLで文字列リテラルを指定するには、一重引用符を使用する必要があります。例えば:

select 'foo' as "bar field";

ここで、'foo'はテキスト定数であり、"bar field"は、内部にスペース文字があるため二重引用符が必要な列エイリアスです。

上記によると、ステートメントをに変更する必要があります

update new_table set hstore_col = hstore_col || hstore('id',id::text) where id = 1
2
Abelisto