Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menguruskan Perhubungan Utama Asing dalam MySQL Tanpa Memadam Rekod Berkaitan pada Jenis Pemadaman?

Bagaimana untuk Menguruskan Perhubungan Utama Asing dalam MySQL Tanpa Memadam Rekod Berkaitan pada Jenis Pemadaman?

Patricia Arquette
Lepaskan: 2025-01-10 12:28:46
asal
250 orang telah melayarinya

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

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 CASCADEKekangan 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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan