1. ホーム
  2. sql

[解決済み] PostgreSQL の単純な挿入がうまくいかない

2022-12-26 17:50:19

質問

Postgresのテーブルに簡単な挿入をしようとしていますが、挿入しようとしている値がカラム名として解釈されているというエラーが発生します。

INSERT INTO "imageTagBusinessMainCategory"
(id, businessMainCategory)
VALUES
(DEFAULT, "auto dealer")

idは主キー、オートインクリメント、NULLでないことを設定しました。これらはphpPgAdminでテーブルをセットアップしたときにチェックしたボックスです。

しかし、私はこのエラーを受け取っています。

ERROR: ERROR: column "auto dealer" does not exist
Query = INSERT
INTO "imageTagBusinessMainCategory"
(id, businessMainCategory)
VALUES
(DEFAULT,
"auto dealer")

テーブル名をダブルクォーテーションで囲んだのは、読んで字のごとく ここで とすべきです。

そして、使用されている DEFAULT でidを自動インクリメントしています。 はここで べきです。

何かアイデアはありますか? ありがとうございます!

どのように解決するのですか?

使用方法 'auto dealer' を使用してください。PostgreSQLは " を識別子の引用符として解釈します。 ' は文字列のための引用符であるとして。

また

  • これが新しいプロジェクトである場合、大文字と小文字が混在したテーブルは使わないでください。 後でフラストレーションの原因になります。後でフラストレーションの原因となります。 SQL 文で大文字と小文字を区別することができない代わりに、識別子名を引用し、大文字と小文字を正しく区別する必要があります。 大文字と小文字を正しく区別する必要があります。

  • を指定する必要はありません。 id / DEFAULT というように、あなたは というのは、すでに実行されているであろうことを実行するように求めているのです。私はこれまで、DBMSの中で を含むことを要求するようなDBMSには出会ったことがありません。 columnName / DEFAULT もし、カラムに はデフォルト値をカラムに入れるので、この余分な KV のペアを追加しても、後でコードを読む人にとって何が起こっているのかが明確になるとは思えません。 この余分なKVペアは、後であなたのコードを読む人にとって、何が起こっているのかを明確にするとは思えません。