ホームページ > データベース > mysql チュートリアル > MySQL の「ON DELETE CASCADE」は、関連する行を削除するときにデータの整合性をどのように確保できますか?

MySQL の「ON DELETE CASCADE」は、関連する行を削除するときにデータの整合性をどのように確保できますか?

Patricia Arquette
リリース: 2025-01-10 12:14:41
オリジナル
486 人が閲覧しました

How Can 'ON DELETE CASCADE' in MySQL Ensure Data Integrity When Deleting Related Rows?

MySQL の「ON DELETE CASCADE」: 参照整合性の維持

データベース設計では、テーブル間の関係の確立が頻繁に行われます。 MySQL の ON DELETE CASCADE 制約は、関連データの削除を自動的に管理するための堅牢なソリューションを提供します。これにより、リンクされたテーブル間で削除が同期されるため、データの整合性が確保されます。

参照整合性の課題への対処

一般的なシナリオ、つまりコンポーネントとそのタイプ間の多対 1 の関係を考えてみましょう。 目標は、特定のタイプが削除されたときに、そのタイプに関連付けられているすべてのコンポーネントを自動的に削除することです。 ただし、コンポーネントが削除されるときに、タイプが意図せず削除されるのではないかという懸念がしばしば生じます。

正しい実装

キーは、components テーブルの外部キー制約の正確な定義です。 最適化された SQL コードは次のとおりです:

<code class="language-sql">CREATE TABLE `components` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `typeId` int(10) unsigned NOT NULL,
    `moreInfo` VARCHAR(32), 
    -- etc
    PRIMARY KEY (`id`),
    KEY `type` (`typeId`)
    CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
      REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)</code>
ログイン後にコピー

詳しい説明

  1. 外部キーの定義: FOREIGN KEY 句は、typeId テーブルの components 列を id テーブルの types 列にリンクします。

  2. ON DELETE CASCADE アクション: この重要な部分は、types テーブルから行を削除すると、components が一致する typeId テーブル内の対応するすべての行の削除を自動的にトリガーすることを指示します。 🎜>

  3. アクション:ON UPDATE CASCADE これにより、 テーブル内の id が更新されると、types テーブル内の対応する typeId も同様に更新されます。components

  4. InnoDB エンジン要件: 外部キー制約には InnoDB ストレージ エンジンが必要です。 古いデフォルトの MyISAM には、この機能がありません。

このアプローチでは、型を削除すると、関連するすべてのコンポーネントが自動的に削除され、データベース管理が合理化され、データの整合性が維持されることが保証されます。

以上がMySQL の「ON DELETE CASCADE」は、関連する行を削除するときにデータの整合性をどのように確保できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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