MySQL で一意制約を指定して ALTER IGNORE TABLE を使用すると、重複したレコードはどうなりますか?

Patricia Arquette
リリース: 2024-11-04 05:13:29
オリジナル
686 人が閲覧しました

What happens to duplicate records when using `ALTER IGNORE TABLE` with a unique constraint in MySQL?

MySQL: 一意の制約を使用した ALTER IGNORE TABLE

MySQL では、一意の制約を追加する必要があるシナリオが発生する場合があります。既存のテーブル。 ALTER TABLE ステートメントは、重複レコードの保持に影響を与える可能性がある IGNORE オプションを提供します。

次の例を考えてみましょう。

ALTER IGNORE TABLE `my_table` ADD UNIQUE (`type`, `owner`);
ログイン後にコピー

次のスキーマを持つテーブル my_table があると仮定します。

ID (AUTO_INCREMENT PRIMARY KEY)
type
owner
description
ログイン後にコピー

同じタイプと所有者の値を持つ複数のレコードがあるとします。

| ID | type | owner |
|---|---|---|
| 1 | Apple | Apple CO |
| 2 | Apple | Apple CO |
ログイン後にコピー

ALTER を使用して一意制約を追加した後、どのレコードが残るのかという疑問が生じます。 IGNORE TABLE?

5.7.4 より前の MySQL バージョンでは、IGNORE 句は一意制約を満たす最初の レコードを保持し、残りを削除します。

| ID | type | owner |
|---|---|---|
| 1 | Apple | Apple CO |
ログイン後にコピー

ただし、IGNORE 句は MySQL 5.7.4 以降から削除されており、これを使用するとエラーが発生することに注意することが重要です。

したがって、MySQL の新しいバージョンでは、使用を避ける必要があります。一意の制約を伴う ALTER IGNORE TABLE。代わりに、次の代替手段の使用を検討してください。

ALTER TABLE `my_table` ADD UNIQUE (`type`, `owner`) USING BTREE;
ログイン後にコピー

この場合、一意制約に違反する重複レコードがある場合、エラーがスローされ、操作は失敗します。このアプローチにより、データの整合性が保証され、レコードの予期しない切り捨てや削除が防止されます。

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

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