23

サイト上の画像についてユーザーが行ったコメントを保存するテーブルがあります。このテーブルは、主キーであるrow_id、image_id、user_id、およびコメントの4つの列で構成されています。私がやりたいのは、ユーザーが画像ごとに1つのコメントしか残せないようにすることです。2つの列に一意のインデックスを作成するだけですか?

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';

落とし穴(gotme?)は、テーブルが非常に大きくなることが予想されるため、テーブルがinnoDBであるということです。これは、主キーが存在するにもかかわらず機能するアプローチですか?

4

1 に答える 1

13

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

別のトピックでは、なぜあなたはrow_id?主キーをとして置くだけ(image_id, user_id)で、これも機能します。

于 2011-05-10T20:10:23.583 に答える