MySQL の ON DELETE CASCADE を使用したデータ整合性の管理
リレーショナル データベースでデータの一貫性を維持するには、テーブルの関係を慎重に管理する必要があります。 MySQL の ON DELETE CASCADE
では、親レコードが削除されると、関連レコードが自動的に削除されます。ただし、この自動カスケードは、慎重に実装しないと、予期せぬ結果を招く可能性があります。
コンポーネントとコンポーネント タイプが関係するシナリオを想像してください。コンポーネントを削除しても、そのコンポーネントに関連付けられているタイプは影響を受けません。 標準の ON DELETE CASCADE
では、型とそのすべてのコンポーネントが誤って削除されてしまいます。
これを防ぐには、コンポーネント テーブルの外部キー制約を調整します。
CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`) REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
ON UPDATE CASCADE
を追加すると、typeId
テーブル内の components
への変更がすべて types
テーブルに反映されます。 これにより、コンポーネントの変更中に誤って型が削除されるのを防ぎます。
重要なのは、外部キー制約には InnoDB ストレージ エンジンが必要であることを覚えておいてください。 MyISAM はそれらをサポートしていません。 この設定により、ON DELETE CASCADE
は削除されたタイプにリンクされているコンポーネントを選択的に削除し、データベースの関係を保護できます。
以上がMySQL の ON DELETE CASCADE で意図しないデータ損失を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。