2011-05-10 19 views
21

私は、ユーザーがサイト上のイメージに関するコメントを格納するテーブルを持っています。表は、主キーであるrow_id、image_id、user_idおよびコメントの4つの列で構成されています。私がしたいことは、ユーザーがイメージごとに1つのコメントしか残せないようにすることです。 2つの列にユニークなインデックスを作成するだけですか?MySQLユニークな列の組み合わせを作成する

CREATE UNIQUE INDEX imgusr ON comments (image_id, user_id); 

アイデアは、次のクエリは、仕事を得ることです:

INSERT INTO comments SET image_id = '1', user_id = '2', comment = 'nice' ON DUPLICATE KEY UPDATE comment = 'nice'; 

gotchya(gotme?)非常に大きくなることが予想されるため、テーブルがInnoDBテーブルであるということです。これはプライマリキーの存在にもかかわらず、動作するアプローチですか?

+0

試しましたか?あなたはそれが失敗したり、それがうまくいかないことについて心配していますか? – outis

+0

私は実際にあるシステムから別のシステムに変換しています。最初のテーブルはかなり大量になります(最初の数週間で2百万に成長すると予想されています)ので、私はこのことについて絶対に確信したいと思います最初から正しい方法。 – Wige

答えて

12

はいこれは完全に機能します。

別のトピックでは、なぜあなたはrow_idを持っていましたか?あなたは単にプライマリキーを(image_id, user_id)とすることもできます。これもうまくいきます。

+0

InnoDBテーブルでこれを行うことができなかったことは分かりませんでした。提案していただきありがとうございます。 – Wige

関連する問題