• ベストアンサー

テーブル名について

へんな質問ですが、 テーブル名をuserにするとinsertでエラーがでます。 テーブル名をuser_bkupとかにすると、エラーが出なくなります。 こんなことってあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#118337
noname#118337
回答No.1

おそらく、userというのはそのアプリ(ACCESSですか?)で既に利用されている名称なのでしょう。 既に利用というのは、ユーザーが設定したのではなく、アプリ内で利用されているメソッドということです。 ACCESSだとしたら、VBAでuserという定義があったかと思います(ちょっと忘れたので確信ではないですが) どのアプリでも、利用されている可能性のあるような名前にするのは危険です。 フリー等だと特に、そこまで考えられておらず、変な動作することもあります。

その他の回答 (2)

回答No.3

プログラミング言語やSQLには、予約語が存在する場合があります。 予約語とは、意味を持った語句であり、コンパイラやDBMSは、その語句を頼りに構文解析を行います。 例えば、select文を考えると、 select→列名や式→from→表名→where 条件→group y 列名→order by 列名 というのが基本的な構文です。 これを構文解析する場合は、「select」、「from」、「where」などが重要なキーワードになります。 ところが、これらのキーワードを、表名や列名などに使用されていると、それらを区別して識別するための工夫が必要になります。しかし、構文の自由度を許しすぎると、今度はその解析にオーバヘッド掛かりすぎてしまうことになってしまいます。 RDBMSの場合は、英単語を表名や列名にそのまま使用すると、予約語に引っ掛かり、想定外の構文エラーになってしまう場合があります。 この回避策として、多くのRDBMSでは、「"」などの引用符で表名や列名を囲めば、予約語と同じキーワードでも使用可能としています。 MySQLの場合は、ANSIの文字コードなら"user"(「"」で囲む)、それ以外の文字コードなら、`user`(「`」で囲む)ことで、予約語を表名や列名で使用することを可能としています。

xyz_1990
質問者

お礼

まとめて、お礼を申し上げます。 ありがとうございました。 userをmemberに変更することで、対応しました。

noname#118337
noname#118337
回答No.2

No.1です。 MySQLだったんですね。今気がつきました(*_*) でも、同じことです。

関連するQ&A