Rumah > pangkalan data > tutorial mysql > Bagaimanakah MySQL's ON DELETE CASCADE Mengendalikan Perhubungan Utama Asing dan Menghalang Rekod Anak Yatim?

Bagaimanakah MySQL's ON DELETE CASCADE Mengendalikan Perhubungan Utama Asing dan Menghalang Rekod Anak Yatim?

Patricia Arquette
Lepaskan: 2024-12-12 13:12:17
asal
921 orang telah melayarinya

How Does MySQL's ON DELETE CASCADE Handle Foreign Key Relationships and Prevent Orphan Records?

Cascading Delete dengan MySQL Foreign Key Constraints

Memastikan integriti data dan mencegah rekod anak yatim adalah penting dalam pengurusan pangkalan data hubungan. Untuk mencapai matlamat ini, MySQL menawarkan kekangan kunci asing yang berkuasa dengan pemadaman berlatarkan.

Mencipta Kekangan Kunci Asing dengan DELETE ON CASCADE

Untuk mewujudkan hubungan kunci asing dengan pemadaman berlata , gunakan sintaks berikut:

FOREIGN KEY (foreign_column) REFERENCES table (primary_key)
ON DELETE CASCADE
ON UPDATE CASCADE
Salin selepas log masuk

Dalam contoh anda, anda mempunyai yang berikut jadual:

CREATE TABLE categories (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(255)
) ENGINE=InnoDB;

CREATE TABLE products (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(255)
) ENGINE=InnoDB;

CREATE TABLE categories_products (
    category_id INT NOT NULL,
    product_id INT NOT NULL,
    PRIMARY KEY (category_id, product_id),
    FOREIGN KEY (category_id) REFERENCES categories (id)
        ON DELETE CASCADE
        ON UPDATE CASCADE,
    FOREIGN KEY (product_id) REFERENCES products (id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
) ENGINE=InnoDB;
Salin selepas log masuk

Memahami Pemadaman Lata

Apabila anda memadamkan rekod daripada jadual kategori, sistem akan memadam secara automatik sebarang rekod yang berkaitan dalam jadual categories_products di mana category_id sepadan dengan kategori yang dipadamkan. Walau bagaimanapun, pemadaman tidak akan mengalir lebih jauh ke jadual produk kerana tiada hubungan kunci asing yang ditentukan di sana.

Sebagai contoh, jika anda memadamkan kategori 'biru', rekod berikut dalam kategori_produk akan dipadamkan:

(blue, mittens)
(blue, boots)
Salin selepas log masuk

Tetapi produk 'but' dan 'sarung tangan' akan kekal utuh dalam produk jadual.

Mencegah Kehilangan Data Tidak Disengajakan

Untuk mengelakkan potensi kehilangan data, adalah penting untuk mempertimbangkan dengan teliti kesan pemadaman berlatarkan sebelum melaksanakannya. Contohnya, dalam senario yang anda nyatakan, jika anda memadamkan kategori yang turut dikaitkan dengan produk lain, produk tersebut juga akan dipadamkan.

Oleh itu, adalah penting untuk menilai kemungkinan akibat dengan teliti dan mentakrifkan perhubungan dengan jelas. antara jadual anda untuk memastikan pemadaman bertingkat tidak menjejaskan integriti data anda.

Atas ialah kandungan terperinci Bagaimanakah MySQL's ON DELETE CASCADE Mengendalikan Perhubungan Utama Asing dan Menghalang Rekod Anak Yatim?. 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