Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menguruskan Perhubungan Utama Asing dalam MySQL Tanpa Memadam Rekod Berkaitan pada Jenis Pemadaman?
Kekangan kunci asing MySQL: padam rekod jenis tanpa memadam rekod yang berkaitan
Dalam pangkalan data hubungan, kekangan kunci asing adalah penting untuk mengekalkan integriti data dan memastikan ketekalan data. ON DELETE CASCADE
Kekangan selalunya digunakan untuk memadam rekod berkaitan secara automatik apabila rekod yang dirujuk dipadamkan. Walau bagaimanapun, dalam beberapa kes, anda mungkin perlu memadamkan rekod rujukan (jenis) sambil mengekalkan rekod yang berkaitan (komponen yang mempunyai jenis itu).
Cabaran
Senario yang diberikan menerangkan pangkalan data komponen di mana setiap komponen dikaitkan dengan jenis tertentu menggunakan perhubungan kunci asing. Apabila memadam jenis, matlamatnya adalah untuk memadam semua komponen dengan kunci asing itu, tanpa menjejaskan jenis itu sendiri. Walau bagaimanapun, menggunakan kekangan ON DELETE CASCADE
akan menyebabkan kedua-dua jenis dan komponen yang berkaitan dengannya dialih keluar.
Penyelesaian
Pastikan anda menggunakan ON DELETE CASCADE
kekangan dengan berhati-hati untuk mencapai tingkah laku yang diingini. Begini cara melakukannya:
<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>
Bahagian utama dalam pertanyaan ini ialah klausa "ON DELETE CASCADE"
dalam perisytiharan kekangan kunci asing. Klausa ini mengarahkan pangkalan data untuk memadam secara automatik semua komponen yang merujuk kepada jenis yang dipadamkan. Pada masa yang sama, klausa "ON UPDATE CASCADE"
memastikan bahawa kunci asing komponen dikemas kini apabila jenis yang dirujuk dikemas kini.
Petua Penting
Sila ambil perhatian bahawa kaedah ini memerlukan penggunaan enjin storan InnoDB. Enjin storan MyISAM lalai tidak menyokong kunci asing. Oleh itu, jika anda menggunakan MyISAM, anda perlu bertukar kepada InnoDB atau mencari cara lain untuk mengurus perhubungan utama asing.
Atas ialah kandungan terperinci Bagaimana untuk Menguruskan Perhubungan Utama Asing dalam MySQL Tanpa Memadam Rekod Berkaitan pada Jenis Pemadaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!