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
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;
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)
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!