回答:
キーワードyear
として解釈されないようにするには、単に二重引用符で囲みます。
INSERT INTO table (id, name, "year") VALUES ( ... );
ドキュメントから:
2つ目の種類の識別子があります。区切り識別子または引用識別子です。これは、文字の任意のシーケンスを二重引用符( ")で囲むことによって形成されます。区切り識別子は常に識別子であり、キーワードではありません。したがって、「select」は、「select」という名前の列またはテーブルを参照するために使用できます。一方、引用符で囲まれていないselectはキーワードとして扱われるため、テーブル名または列名が予想される場所で使用すると、解析エラーが発生します。
update "user" set "password" = 'value...';
完全に正常に動作します...
フィールド/列に引用符を付けない場合、デフォルトでPostgresによって小文字に変換されます。そして、Postgresは列名に関してはキーワードのチェックをスキップします。
あなたの場合、に関しては引用符を追加する必要はないと思いますcolumns
。あなたが使用している場合でも、keywords
の名前として(Postgresではにより登録)Table
、Schema
、Function
またはTrigger
など、あなたはどちらか、二重引用符を使用している必要があります、またはあなたは、ドット連結でスキーマ名を指定することができます。
仮に、orderがPostgresによって登録されたキーワードであるとしましょう。一部のシナリオでは、このキーワードをテーブル名として使用する必要があります。
その時、Postgresはでテーブルを作成できるようにしますkeywords
。それがPostgresの魅力です。
注文テーブルにアクセスするには、二重引用符を使用するか、テーブル名の前にスキーマ名を付けることができます。
例えば
1。
select * from schema_name.order;
2。
select * from "order";
同様に、このタイプの組み合わせを使用できます。これがお役に立てば幸いです。
MyTable
、myTable
およびmytable
まったく同じです。引用符この折り畳みが行われていません。したがって、と同じではありません。"MyTable"
mytable