こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

text型とuniqueについて

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>

投稿日時 - 2009-08-24 20:27:17

QNo.5233625

すぐに回答ほしいです

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

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指定で「制約の対象にする長さ」を指定することが可能になりました。

投稿日時 - 2009-08-26 17:03:28

お礼

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

投稿日時 - 2009-09-03 16:01:12

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)