Rumah > pangkalan data > tutorial mysql > Bagaimanakah Kekangan Kunci Asing MySQL dengan DELETE ON CASCADE Mencegah Ketidakkonsistenan Data?

Bagaimanakah Kekangan Kunci Asing MySQL dengan DELETE ON CASCADE Mencegah Ketidakkonsistenan Data?

Mary-Kate Olsen
Lepaskan: 2024-12-13 07:15:10
asal
243 orang telah melayarinya

How Can MySQL Foreign Key Constraints with DELETE ON CASCADE Prevent Data Inconsistency?

Menggunakan Kekangan Kunci Asing MySQL untuk Mencegah Ketidakkonsistenan Data

Untuk mengekalkan integriti data dan mengelakkan rekod yatim, melaksanakan kekangan kunci asing adalah penting. Ini amat penting apabila menggunakan jadual InnoDB. Kekunci asing mewujudkan perhubungan antara jadual, memastikan bahawa apabila rekod induk dipadamkan, rekod anak yang sepadan akan dipadamkan juga secara automatik.

Memahami DELETE ON CASCADE

DELETE ON CASCADE ialah kekangan kunci asing yang memadamkan rekod anak secara automatik apabila rekod induk mereka dipadamkan. Ini menghalang data menjadi yatim, di mana rekod kanak-kanak wujud tanpa rekod ibu bapa yang sah.

Menyediakan Kekangan Kunci Asing dan PADAM PADA CASCADE

Untuk menyediakan kekangan kunci asing dengan DELETE ON CASCADE, ikut ini langkah:

  1. Buat Jadual Ibu Bapa dan Anak: Tentukan kedua-dua jadual induk (cth., kategori) dan anak (cth., produk) dengan lajur dan kunci utama yang sesuai.
  2. Buat Jadual Pangsi: Reka bentuk jadual pangsi (cth., categories_products) untuk mewujudkan perhubungan banyak-ke-banyak antara jadual induk dan anak.
  3. Tentukan Kekangan Utama Asing: Dalam jadual pangsi, cipta kekangan kunci asing yang merujuk kepada induk dan kunci utama kanak-kanak. Tambahkan klausa "ON DELETE CASCADE" pada takrifan kunci asing.

Contoh:

Pertimbangkan jadual contoh yang disebut dalam pernyataan masalah:

categories
- id (INT)
- name (VARCHAR 255)

products
- id
- name
- price

categories_products
- categories_id
- products_id
Salin selepas log masuk

Untuk menyediakan kekangan kunci asing yang betul, kami akan mencipta jadual sebagai berikut:

CREATE TABLE categories (
    id int unsigned not null primary key,
    name VARCHAR(255) default null
)Engine=InnoDB;

CREATE TABLE products (
    id int unsigned not null primary key,
    name VARCHAR(255) default null
)Engine=InnoDB;

CREATE TABLE categories_products (
    category_id int unsigned not null,
    product_id int unsigned not null,
    PRIMARY KEY (category_id, product_id),
    KEY pkey (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

Dengan persediaan ini, jika anda memadamkan kategori, hanya rekod yang sepadan dalam categories_products akan dipadamkan, memelihara integriti jadual produk. Walau bagaimanapun, pemadaman produk tidak akan menjejaskan jadual kategori.

Dengan melaksanakan kekangan kunci asing dengan teliti dengan DELETE ON CASCADE, anda boleh mengekalkan integriti data dan mencegah rasuah data, memastikan pangkalan data anda mencerminkan hubungan yang betul antara rekod.

Atas ialah kandungan terperinci Bagaimanakah Kekangan Kunci Asing MySQL dengan DELETE ON CASCADE Mencegah Ketidakkonsistenan Data?. 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