ホームページ > データベース > mysql チュートリアル > Postgres の DELETE クエリが「列が存在しません」というメッセージで失敗するのはなぜですか?

Postgres の DELETE クエリが「列が存在しません」というメッセージで失敗するのはなぜですか?

DDD
リリース: 2025-01-10 08:35:43
オリジナル
528 人が閲覧しました

Why Does My Postgres DELETE Query Fail with

Postgres DELETE クエリ エラー: 「列が存在しません」

PostgreSQL で DELETE ステートメントを実行すると、「エラー: 列 "列名" が存在しません」というエラーが発生する場合があります。この紛らわしいエラーは通常、クエリ条件内の変数が二重引用符 (") で囲まれている場合に発生します。PostgreSQL はこれを値ではなく列名として解釈します。

たとえば、次のクエリでは上記のエラーが発生します:

<code class="language-sql">delete from "Tasks" where id = "fc1f56b5-ff41-43ed-b27c-39eac9354323";</code>
ログイン後にコピー

このエラー メッセージは、PostgreSQL が「Tasks」テーブルで「fc1f56b5-ff41-43ed-b27c-39eac9354323」という名前の列を検索しようとしていることを示しています。ただし、この列は存在しません。

問題は、PostgreSQL がテーブル名、プロシージャ名、列名など、二重引用符 (") で囲まれたものをすべて識別子として扱うことです。この場合、二重引用符が使用されているため、PostgreSQL は値「fc1f56b5」を誤って扱います。 - ff41-43ed-b27c-39eac9354323" は列名として解釈されます。

この問題を解決するには、文字定数が二重引用符ではなく一重引用符 (') で囲まれていることを確認してください。一重引用符を使用すると、PostgreSQL は指定された値を列名ではなく定数として正しく認識できます。正しいクエリは次のようになります:

<code class="language-sql">delete from "Tasks" where id = 'fc1f56b5-ff41-43ed-b27c-39eac9354323';</code>
ログイン後にコピー

以上がPostgres の DELETE クエリが「列が存在しません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート