Dalam pengurusan pangkalan data, kunci asing menguatkuasakan integriti rujukan dengan memautkan data antara jadual. Secara lalai, kebanyakan sistem pangkalan data menyediakan kunci asing dengan gelagat "ON DELETE CASCADE", yang memadamkan rekod anak apabila rekod induk mereka dipadamkan.
Walau bagaimanapun, terdapat senario di mana anda mungkin mahu mengubah suai tingkah laku ini kepada " PADA HAD PADAM." Perubahan ini menghalang pemadaman rekod induk jika mereka mempunyai rekod anak sedia ada.
Untuk menukar tindakan rujukan, anda perlu melepaskan kekangan sedia ada terlebih dahulu. Gunakan sintaks berikut:
ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
Ganti "table_name" dengan nama jadual yang mengandungi kunci asing dan "constraint_name" dengan nama kekangan sedia ada.
Setelah kekangan lama digugurkan, anda boleh menambah yang baharu dengan rujukan yang diingini tindakan. Gunakan sintaks berikut:
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column) ON DELETE RESTRICT;
Ganti "table_name" dengan jadual yang sama seperti sebelumnya, "constraint_name" dengan nama kekangan baharu, "column_name" dengan lajur kunci asing, "referenced_table" dengan jadual yang dirujuk , dan "lajur_rujukan" dengan lajur yang dirujuk dalam jadual yang dirujuk.
Pertimbangkan struktur jadual berikut:
CREATE TABLE UserDetails ( Detail_id INT PRIMARY KEY, User_id INT NOT NULL, FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE );
Untuk menukar tindakan rujukan kepada "ON DELETE RESTRICT," ikut langkah berikut:
Lepaskan yang sedia ada kekangan:
ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id;
Tambah kekangan baharu:
ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE RESTRICT;
Selepas perubahan ini, memadamkan rekod dalam jadual "Pengguna" tidak lagi akan menghantar pemadaman ke jadual "UserDetails". Pemadaman akan dihadkan jika terdapat rekod anak sedia ada dalam "Butiran Pengguna" yang merujuk rekod induk dalam "Pengguna."
Atas ialah kandungan terperinci Bagaimana untuk menukar ON DELETE CASCADE kepada ON DELETE RESTRICT untuk Kunci Asing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!