ホームページ >データベース >mysql チュートリアル >MySQL の ON DELETE CASCADE は、タイプ レコードを保持したままコンポーネント レコードを自動的に削除できますか?
MySQL の ON DELETE CASCADE: 型レコードを保持しながらコンポーネントを削除する
MySQL の 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>
コンポーネント テーブルの作成: このテーブルには、コンポーネントの詳細とそれに対応する typeId
が保持されます。
外部キーの実装: 外部キー制約 (myForeignKey
) は、components
テーブルの typeId
列を types
テーブルの id
列に接続します。
ON DELETE CASCADE 仕様: 重要な要素: ON DELETE CASCADE
。 types
テーブル内のレコードが削除されると (両方のテーブルが InnoDB ストレージ エンジンを使用していると仮定して)、components
を共有する typeId
テーブル内のすべての関連レコードが自動的に削除されます。
重要な考慮事項:
InnoDB は不可欠です。 MyISAM には外部キーのサポートがないため、このアプローチは無効になります。
以上がMySQL の ON DELETE CASCADE は、タイプ レコードを保持したままコンポーネント レコードを自動的に削除できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。