176

一意である必要があるがそうではないフィールドを持つ既存のテーブルがあります。これを知っているのは、別の既存のエントリと同じ値のエントリがテーブルに作成され、これが問題を引き起こしたためです。

このフィールドが一意の値のみを受け入れるようにするにはどうすればよいですか?

4

7 に答える 7

325
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

MySQL 5.7.4以降の場合:

ALTER TABLE mytbl ADD UNIQUE (columnName);

MySQL 5.7.4以降、ALTER TABLEのIGNORE句が削除され、使用するとエラーが発生します。

したがって、IGNOREキーワードはサポートされなくなったため、最初に重複するエントリを削除してください。

参照

于 2011-02-18T05:45:15.473 に答える
17

制約にも名前を付けたい場合は、これを使用します。

ALTER TABLE myTable
  ADD CONSTRAINT constraintName 
    UNIQUE (columnName);
于 2011-02-18T05:48:10.073 に答える
7

CREATE UNIQUE INDEX foo ON table_name (field_name)

そのSQLを実行する前に、その列の重複した値を削除する必要があります。その列に既存の重複値があると、mysql エラー 1062 が発生します。

于 2011-02-18T05:47:35.487 に答える