ホームページ > データベース > mysql チュートリアル > タイプの削除時に関連レコードを削除せずに MySQL で外部キーの関係を管理する方法

タイプの削除時に関連レコードを削除せずに MySQL で外部キーの関係を管理する方法

Patricia Arquette
リリース: 2025-01-10 12:28:46
オリジナル
250 人が閲覧しました

How to Manage Foreign Key Relationships in MySQL Without Deleting Related Records on Type Deletion?

MySQL 外部キー制約: 関連レコードを削除せずにタイプ レコードを削除

リレーショナル データベースでは、外部キー制約はデータの整合性を維持し、データの一貫性を確保するために重要です。 ON DELETE CASCADE制約は、参照レコードが削除されたときに関連レコードを自動的に削除するためによく使用されます。ただし、場合によっては、関連レコード (そのタイプを持つコンポーネント) を保持したまま、参照レコード (タイプ) を削除する必要がある場合があります。

チャレンジ

指定されたシナリオは、各コンポーネントが外部キー関係を使用して特定のタイプに関連付けられているコンポーネントのデータベースを記述します。型を削除するときの目標は、型自体には影響を与えずに、その外部キーを持つすべてのコンポーネントを削除することです。ただし、ON DELETE CASCADE 制約を使用すると、型とそれに関連付けられたコンポーネントの両方が削除されます。

解決策

望ましい動作を実現するために、ON DELETE CASCADE 制約は注意して使用してください。その方法は次のとおりです:

<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>
ログイン後にコピー

このクエリの重要な部分は、外部キー制約宣言の "ON DELETE CASCADE" 句です。この句は、削除された型を参照するすべてのコンポーネントを自動的に削除するようにデータベースに指示します。同時に、"ON UPDATE CASCADE" 句により、参照される型が更新されたときにコンポーネントの外部キーも更新されることが保証されます。

重要なヒント

この方法では InnoDB ストレージ エンジンを使用する必要があることに注意してください。デフォルトの MyISAM ストレージ エンジンは外部キーをサポートしません。したがって、MyISAM を使用している場合は、InnoDB に切り替えるか、外部キー関係を管理する別の方法を見つける必要があります。

以上がタイプの削除時に関連レコードを削除せずに MySQL で外部キーの関係を管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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