- ベストアンサー
MySQL予約語名でカラム作成可能か
- MySQL予約語名でもカラムを作成することができるのか疑問です。
- 予約語を使用したために起こる文法エラーの原因を調べていると、MySQL予約語名でもカラムを作成できることがわかりました。
- 予約語による影響を受ける場合やどのような場合に影響を受けるのか、具体的な例や関連する情報を知りたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
まぁ、使ってしまった予約語ならしかたがありません。そのカラム名を使う時は、'sikibetusi'のように、''で囲んであげてください。 >・予約語を回避するには、ここをチェックするしかないのでしょうか? その通りです。ないしは、全部覚えるかですが・・・普通は、怪しげだなと思ったらチェックします。 バージョンによっても違いますから、ちゃんと新しいマニュアルでチェックします。 >予約語による影響を受けるのはどんな時?(CREATEは関係ない?) 予約語によって異なる? パーサーの構文解析規則はちゃんと決まっているのですが・・・・あんな複雑な規則を全部評価して、影響があるかどうか判断するのは、お勧めしません。しかも、変わる可能性は極めて大だし。 全て影響があるものとして、予約語を識別子として使用した時は、必ず''で囲うというのが正解です。 本来は、テーブルを設計した時に、必ず予約語表で確認すべきです。特に、簡単な英単語は非常に危険です。予約語が全部英語であることを逆手に取ることも出来ます。そう。カラム名などの識別子は、全部日本語のローマ字表記にしてしまうんです。まぁ予約語とバッティングすることはありません。日本人ならちゃんと意味も通りますしね。
その他の回答 (3)
- nora1962
- ベストアンサー率60% (431/717)
定義、使用すべてでバッククォート「`」で括れば使用は出来ます。 create table `create` ( dummy int ); ただし、お勧めはしません。ODBCなどで使う場合などがあると破綻するからです。
お礼
回答ありがとうございました。 >定義、使用すべてでバッククォート「`」で括れば使用は出来ます >ただし、お勧めはしません。ODBCなどで使う場合などがあると破綻するからです ・アドバイスありがとうございました ・参考になりましたー
- mitoneko
- ベストアンサー率58% (469/798)
No2です。引用符の記号間違えました。 「'」ではなくて、「`」です。よく似てますが・・・=^・・;= 失礼しました。
お礼
補足ありがとうございましたー
- pa_cotta
- ベストアンサー率43% (25/58)
バッククォート(`)で囲めば可能です。 が、わざわざ予約語をカラム名に指定してトラブルの種を増やすこともないでしょう。 どうしても予約語になってしまうような場合はprefixを付けるなどで対応したほうがいいかと思います。
お礼
回答ありがとうございました。 >わざわざ予約語をカラム名に指定してトラブルの種を増やすこともないでしょう ・その通りなのですが、カラム作成できたので、てっきりイケるものだとばかり思い込んでしまいました…
お礼
回答ありがとうございました。 >パーサーの構文解析規則はちゃんと決まっているのですが・・・・あんな複雑な規則を全部評価して、影響があるかどうか判断するのは、お勧めしません。しかも、変わる可能性は極めて大だし >本来は、テーブルを設計した時に、必ず予約語表で確認すべきです。特に、簡単な英単語は非常に危険です ・大変参考になりました ・これからは、テーブル設計する際、必ず「予約語表で確認」するようにしたいと思います