「15909434_user」のような名前のテーブルを作成しようとすると、「Table」というエラーが発生します。または列名を数値で始めることはできません。」これにより、なぜこの規則が存在するのかという疑問が生じます。
PostgreSQL のドキュメントによると、データベース内のオブジェクト名は「名前の種類」に従い、文字またはアンダースコアで始まり、英数字と文字で構成される必要があります。
この制限を回避するには、二重引用符を使用してテーブル名を囲み、テーブル名を「引用符付き」に変換します。識別子。」ただし、二重引用符は名前の一部とみなされず、63 文字の制限にはカウントされないことに注意することが重要です。
この規則の背後にある理由は、元の SQL 標準に由来しています。標準の「識別子の開始」ブロックは、識別子が主に単純なラテン文字で始まらなければならないことを指定しています。このルールにより、SQL インタープリターの解析プロセスが簡素化されます。
単純な列名と数値式の両方を許可する SELECT-list 句の場合、この規則を適用すると、パーサーが 2 つを区別しやすくなります。たとえば、テーブル名と列名が数値で始まることが許可されている場合、「2e2」は列名と有効な数値式の両方として解釈される可能性があります。
識別子が文字で始まるというルールを設けることにより、パーサーはテーブル名や列名ではなく、「2e2」が数値式であり、「3.4」が数値であることがすぐにわかります。
数値の先頭文字を許可するスキームを考案することは可能ですが、ルールがさらに曖昧になり、構文が複雑になる可能性があります。現在の規約は、効率的な解析を保証し、潜在的な曖昧さを回避することで、この問題に対する明確かつ直接的な解決策を提供します。
以上がデータベースのテーブル名または列名を数字で始めることができないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。