プロが教える店舗&オフィスのセキュリティ対策術

mysqlでテーブル作成したいのですが
l_urlのtext型のuniqueは、どうやって作成したらいいのでしょうか?
後、テーブル作成を実際すると結構つまずくので練習したいのですが
何かいい勉強方法はありますか?

/* リンクデータ用テーブル作成
CREATE TABLE linkdata (
id int NOT NULL auto_increment,
l_url text NOT NULL unique,
l_title varchar(100) NOT NULL default '',
l_comment varchar(255) default NULL,
l_date datetime default NULL,
PRIMARY KEY (id)
);

実行結果:
ERROR 1170 (42000): BLOB/TEXT column 'l_url' used in key specification without a key length
mysql>

A 回答 (1件)

text型を使うのは、なるべく避けましょう。


長さの上限を予め決められるものは、varcharを使い、長さの上限は可能か限り短くしましょう。

text型は事前に長さの上限が決められないような場合に使いますが、物理的に複数のレコードに格納されたりするので、高い性能は出せません。また、text型を実装している多くのRDBMSでは、text型に対する操作に制限が設けれています。

>l_urlのtext型のuniqueは、どうやって作成したらいいのでしょうか?

text型に格納するようなものに、unique制約をつけようとすること自体、設計に問題があるのですけどね。

>ERROR 1170 (42000): BLOB/TEXT column 'l_url' used in key specification without a key length

エラーメッセージの通りです。
MySQLではtext型を実装していますが、当初は定義や操作に多くの制限がありました。どのバージョンだったか忘れましたが、制限が一部緩和され、unque指定で「制約の対象にする長さ」を指定することが可能になりました。
    • good
    • 0
この回答へのお礼

意見大変参考になりました。DBとはから勉強しなおします。ありがとうございました

お礼日時:2009/09/03 16:01

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