Rumah > pangkalan data > tutorial mysql > Bagaimana untuk menukar ON DELETE CASCADE kepada ON DELETE RESTRICT untuk Kunci Asing?

Bagaimana untuk menukar ON DELETE CASCADE kepada ON DELETE RESTRICT untuk Kunci Asing?

Patricia Arquette
Lepaskan: 2024-11-29 18:18:16
asal
675 orang telah melayarinya

How to Change ON DELETE CASCADE to ON DELETE RESTRICT for Foreign Keys?

Mengubah suai Tindakan Rujukan untuk Kunci Asing: Panduan Langkah demi Langkah

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.

Langkah 1: Menggugurkan Kekangan Lama

Untuk menukar tindakan rujukan, anda perlu melepaskan kekangan sedia ada terlebih dahulu. Gunakan sintaks berikut:

ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
Salin selepas log masuk

Ganti "table_name" dengan nama jadual yang mengandungi kunci asing dan "constraint_name" dengan nama kekangan sedia ada.

Langkah 2: Menambah Baharu Kekangan

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

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.

Contoh: Menukar ON DELETE CASCADE kepada ON DELETE RESTRICT

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

Untuk menukar tindakan rujukan kepada "ON DELETE RESTRICT," ikut langkah berikut:

  1. Lepaskan yang sedia ada kekangan:

    ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id;
    Salin selepas log masuk
  2. Tambah kekangan baharu:

    ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE RESTRICT;
    Salin selepas log masuk

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!

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