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 サイトの他の関連記事を参照してください。