0

comments(単純化された)行idarticle_iduser_idおよびを含むテーブルがありtextます。

今、私はアイデアを思いつきました。どうにかして一意のインデックスを作成しarticle_id、データベース設計から直接二重投稿user_idtext防ぐことはできますか?

textタイプからのものTEXTであり、インデックス付けを拒否するので、どうすればよいですか?

4

2 に答える 2

1

「保存」ボタンを誤ってダブルクリックするのを防ぐつもりですか?または、まったく同じテキストを 1 週間後に投稿しないようにしますか? それが最初のものである場合は、最初のクリックでボタンを無効にするだけかもしれません。2 番目の場合は、テキスト フィールドでハッシュ関数を実行して、その記事でそのユーザーに一致するユーザーが既に存在するかどうかを確認する必要があります。または、テキスト フィールドのハッシュ関数であるフィールドを追加し、それを使用して一意の複合キーを作成します。ここのように

于 2013-03-29T03:23:52.570 に答える
1

フィールドにを作成するINDEXにはTEXT、エラーが示唆しているように、インデックスの長さを指定する必要があります。これはテキスト フィールドの一部のみをインデックス化するため、フィールドなどの別のフィールドをインデックスの一部として使用することを検討することをお勧めします。DATE記事名は日ごとに一意であるなどです。

INDEX UniqueArticle (article_id, user_id, text(100));

MyISAM テーブルの場合

The maximum key length is 1000 bytes. This can also be changed by changing the source and recompiling. For the case of a key longer than 250 bytes, a larger key block size than the default of 1024 bytes is used.

InODB テーブルの場合

Index key prefixes can be up to 767 bytes. See [Section 12.1.8, “CREATE INDEX Syntax”][1].

参照: http://dev.mysql.com/doc/refman/5.6/en/create-table.html

参照: mysql テーブルで TEXT フィールドを使用する際の問題

于 2013-03-29T03:29:16.573 に答える