ホームページ > データベース > mysql チュートリアル > MySQL に UNIQUE 制約を追加するとレコードが重複するとどうなりますか?

MySQL に UNIQUE 制約を追加するとレコードが重複するとどうなりますか?

Linda Hamilton
リリース: 2024-11-03 08:00:30
オリジナル
1015 人が閲覧しました

What Happens to Duplicate Records When Adding a UNIQUE Constraint in MySQL?

重複レコードに対する ALTER IGNORE TABLE ADD UNIQUE の影響の確認

複数の列に UNIQUE 制約をテーブルに追加しようとすると、この制約に違反する重複レコードが発生することは避けられません。 MySQL の以前のバージョンでは、ALTER TABLE ステートメントの IGNORE 句がこのような重複の処理に重要な役割を果たしていました。

MySQL 5.7.4 以降: IGNORE 句が削除されました

ただし、MySQL 5.7.4 以降、IGNORE 句は非推奨になり、これを使用するとエラーが発生するようになりました。したがって、以下に概説する古い動作は適用されなくなりました。

古い MySQL バージョンでの動作

IGNORE 句をサポートする古い MySQL バージョンでは、次の場合に次の動作が発生します。 UNIQUE 制約の追加:

  • 最初の行は保持されます: 新しく一意の列に重複する値を持つ行のうち、最初の 行のみが保持されます。
  • その他の重複する行は削除されます: 重複した値を持つ残りの行は自動的に削除されます。
  • 不正な値の切り捨て: 他の行に違反する値制約は、許容可能な制限に合わせて切り詰められるか、変更されます。

この例では、タイプ = 'Apple' および所有者の重複レコードを含むテーブルに、(タイプ、所有者) に UNIQUE 制約が追加されています。 = 'Apple CO'、最小の ID を持つレコードが保持されます。同じ値を持つ他のレコードは削除されます。

ただし、この動作は 5.7.4 より前の MySQL バージョンに固有であることに注意することが重要です。最新の MySQL バージョンでは、IGNORE 句はサポートされなくなり、すべての競合するレコードにより ALTER TABLE 操作が失敗します。

以上がMySQL に UNIQUE 制約を追加するとレコードが重複するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート