MySQL MariaDB

MySQL DELETE CASCADE

MySQL DELETE CASCADE
Pada MySQL, pernyataan ON DELETE CASCADE digunakan untuk mengeluarkan baris yang sesuai dari jadual anak secara tidak langsung setiap kali baris dikeluarkan dari jadual induk. Ini adalah jenis tingkah laku kontekstual yang berkaitan dengan kunci asing.

Dengan andaian bahawa anda telah menghasilkan dua jadual dengan KUNCI ASING dalam hubungan kunci asing, menjadikan satu jadual ibu bapa dan anak. Selepas itu, satu KUNCI ASING harus diperbaiki agar yang lain berjaya sepanjang aktiviti lata, kemudian kami tentukan penyataan ON DELETE CASCADE. Mungkin jika satu penyataan KUNCI ASING menentukan ON DELETE CASCADE, fungsi lata akan mencetuskan pengecualian.

Mari kita memahami bagaimana di seluruh jadual MySQL, kita dapat menggunakan penyataan ON DELETE CASCADE.

Anda harus membuka baris perintah MySQL yang baru dipasang Client Shell untuk meneruskan kerja. Setelah membuka, anda akan diminta memasukkan kata laluan anda untuk terus menggunakan shell klien baris perintah MySQL, seperti yang dilampirkan di bawah.

Seterusnya, kita akan membina dua jadual yang disebut "pesanan" dan "pelanggan". Kedua-dua jadual saling dihubungkan dengan fungsi hapus lata menggunakan kunci asing. "Pesanan" adalah jadual induk pada saat ini, dan meja anak adalah "pelanggan". Dengan skrip yang disertakan, bersama dengan catatan masing-masing, anda harus membina kedua-dua jadual. Gunakan perintah "gunakan" di bawah untuk memilih pangkalan data yang ingin anda gunakan atau buat jadual di dalamnya. Di sini "data" adalah pangkalan data yang kami gunakan.

>> menggunakan data;

Buat Jadual Ibu Bapa:

Pertama sekali, anda harus membuat jadual "pesanan" bersama dengan bidangnya menggunakan perintah CREATE TABLE, seperti yang ditunjukkan dalam pertanyaan di bawah. Lajur "ID" akan digunakan dalam tabel berikutnya "pelanggan" sebagai kunci asing.

>> BUAT data JADUAL.pesanan (ID INT PRIMARY KEY AUTO_INCREMENT NOT NULL, Item VARCHAR (50) NOT NULL, Price VARCHAR (50) NOT NULL);

Mari tambahkan beberapa data ke jadual ini. Anda harus melaksanakan pertanyaan yang ditunjukkan di bawah di shell baris perintah MySQL dan jalankan setiap arahan secara berasingan dalam baris perintah atau hanya menambahkan semua arahan dalam baris perintah dalam satu langkah. Anda juga dapat menggunakan MySQL Workbench GUI untuk menambahkan data ke jadual.

Sekarang mari kita periksa jadual "pesanan" setelah meletakkan nilai di dalamnya. Anda boleh menggunakan perintah SELECT untuk tujuan ini seperti berikut:

>> PILIH * DARI data.pesanan;

Anda dapat melihat bahawa data telah berjaya disimpan ke dalam tabel "pesanan" seperti yang diharapkan.

Buat Jadual Anak dengan DELETE Cascade:

Sekarang, giliran untuk jadual lain yang disebut "pelanggan" dibuat.

Pertama, anda mesti menaip kata kunci "BUAT" bersama dengan nama jadual. Kemudian, anda harus menambahkan nama bidang atau lajur bersama dengan jenis datanya. Anda harus menamakan lajur terakhir, yang akan digunakan sebagai kunci asing dalam jadual ini, sama seperti yang anda namakan di jadual sebelumnya. Seperti yang anda ketahui lajur "ID" dari tabel "order" telah digunakan sebagai kunci asing dalam tabel "pelanggan" sebagai "OrderID". Selepas itu, anda harus menambahkan kata kunci "KONSTRAINT", yang digunakan untuk menginisialisasi Kunci ASING, bersama dengan rujukan jadual sebelumnya. Sekarang anda harus menggunakan pernyataan “DELETE CASCADE” bersama dengan kata kunci “ON”.

>> BUAT data JADUAL.pelanggan (CustID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR (45) NOT NULL, OrderID INT NOT NULL, CONSTRAINT order_id_fk FOREIGN KEY (OrderID) RUJUKAN data.pesanan (ID) ON DELETE CASCADE);

Setelah jadual dibuat, dan DELETE CASCADE berjaya digunakan pada jadual ini, sudah tiba masanya untuk memasukkan beberapa nilai ke dalam jadual ini. Cubalah arahan di bawah ini satu demi satu di shell pelanggan baris perintah MySQL untuk melakukan ini.

Selepas itu, lakukan penyisipan pertanyaan. Ini adalah titik untuk memeriksa jadual sama ada data berjaya ditambahkan atau tidak. Oleh itu, cubalah arahan di bawah ini untuk melakukan ini:

>> PILIH * DARI data.pelanggan;

Di sini, anda dapat melihat output jadual bahawa data diberikan dengan cekap kepadanya dan tanpa kesalahan atau kesalahan.

Padamkan Rekod:

Sekarang apabila anda menghapus data atau baris dari jadual induk, ia juga akan menghapus data atau baris dari jadual anak kerana DELETE CASCADE yang diaktifkan pada kunci asing yang disebutkan dalam jadual anak. Mari cuba pertanyaan HAPUS terlebih dahulu, kemudian periksa hasilnya. Kami akan menghapus data dari tabel "pesanan" di mana "ID" adalah "11". Sekiranya "ID" yang sama akan ditemukan dalam tabel "pelanggan" di lajur kunci asing, "OrderID", maka baris atau data relatif dalam tabel "pelanggan" juga akan dihapus. Cubalah perintah di bawah di baris perintah untuk melakukannya:

>> HAPUS DARI data. pesanan WHERE ID = '11';

Pertama, mari kita periksa jadual induk. Kemudian, ketik perintah SELECT yang terdapat di bawah untuk mengambil rekod yang tersisa dari jadual "pesanan" setelah penghapusan beberapa rekod. Anda akan melihat bahawa rekod jadual, di mana "ID" adalah "11", telah berjaya dihapus dari jadual ini. Ini bermaksud bahawa catatan relatif nilai ID yang sama, "11", akan dihapus dari jadual anak juga.

>> PILIH * DARI data.pesanan;

Mengambil rekod jadual anak menggunakan perintah SELECT semudah yang anda lakukan sebelumnya. Cubalah arahan di bawah ini, dan anda akan mendapat hasilnya.

Setelah mendapat hasilnya, anda dapat melihat bahawa catatan "CustID" yang memiliki nilai "1" yang telah dihapus sepenuhnya. Ini kerana lajur "OrderID" memiliki nilai "11" pada baris pertama, yang menyebabkan penghapusan baris tersebut.

>> PILIH * DARI data.pelanggan;

Apabila anda cuba menjatuhkan jadual induk menggunakan arahan DROP, MySQL akan menghalang anda daripada melakukannya. Ini kerana jadual induk telah mengaktifkan DELETE CASCADE di atasnya. Oleh itu, untuk menjatuhkan jadual, anda mesti membuang DELETE CASCADE daripadanya.

Kesimpulan:

Kami telah menyelesaikan penjelasan DELETE CASCADE di MySQL. Untuk menjadikannya lebih jelas, cuba lebih banyak contoh di hujung anda.

Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah penambahan kedua belas untuk siri Tomb Raider - francais permainan aksi-pengembaraan yang dibuat oleh Eidos Montreal....
Cara Meningkatkan FPS di Linux?
FPS bermaksud Bingkai sesaat. Tugas FPS adalah mengukur kadar bingkai dalam pemutaran video atau persembahan permainan. Dengan kata mudah bilangan gam...
Permainan Makmal Apl Oculus Teratas
Sekiranya anda adalah pemilik alat dengar Oculus, maka anda mesti mengetahui tentang memuatkan sideload. Sideloading adalah proses memasang kandungan ...