アプリ版:「スタンプのみでお礼する」機能のリリースについて

テーブルを作成しようとしたとき、フィールド名にピリオドが入るとエラーが出ます。
例:
Create table tableA (
Idx MEDIUMINT,
0hr DECIMAL(6,2),
1hr DECIMAL(6,2),
1.5hr DECIMAL(6,2),
2hr DECIMAL(6,2)
);
ERROR 1060 (42S21) at line 1: Duplicate column name '5hr_1st'

フィールド名にピリオドは使えないのでしょうか?
よろしくお願いします。

A 回答 (5件)

参考URLを見る限りカラム名にはピリオドOK見たいですね。


引用符でかこったらいけるかも。

Create table tableA (
Idx MEDIUMINT,
'0hr' DECIMAL(6,2),
'1hr' DECIMAL(6,2),
'1.5hr' DECIMAL(6,2),
'2hr' DECIMAL(6,2)
);

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/legal-nam …
    • good
    • 0
この回答へのお礼

taskuni様
どうもありがとうございました。
おかげでエラーなくテーブルを作成することができました。

お礼日時:2005/12/02 11:55

#3です。


見解の相違なので、おそらく意見の一致にはいたらない
とは思いますが、あえて一方的に意見だけいわせてもらう
と、例えば使えるからと言って安易にテーブル名に
2バイト文字をつかうのは、推奨外のはずです。
おなじように明らかに障害の種になるような文字を
意図的に使うことは自分の首をしめ、さらに
グループワークなどでコンセンサスを得るには
不向きなため標準的でないという表現を用いました。

ポリシーをもって異を唱えるかたに同意してほしい
とは思いませんが、本件のように問題解決につまづく
ような質問者の方にはあきらかに「推奨外」だと
思います。

わたしは例文をだすときにも必ず「`」で囲んで
誤解が生じないように書いていますが、
解説書によっては引用符をつけないものも多々ある
ようですので、ケアレスミスにつながるようなものを
看過するのは得策ではないという持論です。
    • good
    • 0

「.」(ピリオド)に限らず、「-」(マイナス)や


「 」(空白)、予約語と同じ名前を、表名、列名に
使う場合は、引用符(一般的には「"」。MySQLでは「`」)を使います。

英語風の表名や列名を考えた場合、予約語とぶつかって
しまうのは珍しいことではなく、RDBMSメーカーの中
には予約語と重ならないように引用符で囲むように推奨
しているところもあります。

#3の回答にあるような、「標準でできないものを無理
やり使う」には当たりません。
    • good
    • 0
この回答へのお礼

chukenkenkou様
どうもありがとうございました。
いろいろ勉強になりました。

お礼日時:2005/12/02 11:58

というか、標準でできないものを無理やり使う


くらいなら使わないように心掛けたいものです。
ケアレスミスによるバグの原因ともなりかねません。
    • good
    • 0

No.1の方の補足で。



参考URLには以下のようにあります。

> 識別子が予約語である場合や、識別子に特殊文字が含まれている場合は、
> 引用符として使用したバッククォート(「`」)文字でその識別子を
> 必ず囲む必要があります。

というわけで「`」でいけるはずです。

ちなみに「a.a」とかなら特に囲まなくてもいけますね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!