• ベストアンサー

予約語のgroup

groupは予約語のためカラム名には使えないはずですが、alter文だと作れてしまうのはmysqlのバグですか? ALTER TABLE `hoge` ADD `group` INT NOT NULL ;

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

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 カラム名やテーブル名等の名前を「識別子」と言います。  さて、識別子の作り方にはルールがあるわけですが、MySQLにおけるルールは、次のURLのページに書かれています。(これは、5.1のものです。)  http://dev.mysql.com/doc/refman/5.1/ja/identifiers.html  さて、このページを読むと、「識別子に予約語を使用してはならない。」というルールはどこにも書かれていません。  そう。そんなルールは無いのです。  ただし、次のように書かれています。 >識別子が予約語、もしくは特殊文字を含む場合、 参照する時必ず引用符で囲まなければいけません。 >(例外:修飾名内で点の後に続く語は識別子であるため、予約語であっても引用符で囲む必要はあり >ません。)  つまり、文法に従うだけなら、引用符で囲みさえすれば、予約であっても斟酌なしに使っても良いということです。  従って、事例としてあげられたALTER文は、立派に合法的な文です。決して、MySQLがとちっているわけではありません。(ちなみに、CREATE TABLE文でも引用符で囲むことを忘れなければ、ちゃんと通ります。)  ですが・・・普通は、やめておくことをお勧めします。  特に、サードパーティーのツールで、このあたりの解釈が厳密に出来ていないものにぶつかるとトラブルの元になります。  

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

バッククオートで囲んでるんだから、予約語じゃないでしょ。

すると、全ての回答が全文表示されます。

関連するQ&A