„MySQL MariaDB“

„MySQL DELETE CASCADE“

„MySQL DELETE CASCADE“
„MySQL“ sakinys „Ištrinti kaskadą“ naudojamas netiesiogiai išimant atitinkamas eilutes iš antrinės lentelės, kai eilutės pašalinamos iš tėvų lentelės. Tai yra santykinis užsienio rakto kontekstinio elgesio tipas.

Darant prielaidą, kad sukūrėte dvi lenteles su UŽSIENIO RAKTU užsienio rakto santykyje, pateikdami vieną iš tėvų ir vaikų lentelę. Po to turėtų būti nustatyta, kad vienas UŽSIENIO RAKTAS yra sėkmingas visuose kaskadiniuose veiksmuose, tada nurodome teiginį ON DELETE CASCADE. Galbūt, jei vienas FOREIGN KEY sakinys nustato ON DELETE CASCADE, kaskados funkcijos sukels išimtį.

Supraskime, kaip „MySQL“ lentelėje galėtume naudoti teiginį „ON DELETE CASCADE“.

Norėdami tęsti darbą, turite atidaryti neseniai įdiegtą „MySQL“ komandinės eilutės „Client Shell“. Atidarę jūsų paprašys įvesti slaptažodį, kad galėtumėte toliau naudoti „MySQL“ komandinės eilutės kliento apvalkalą, kaip nurodyta toliau.

Tada mes sukursime dvi lenteles, vadinamas „užsakymu“ ir „klientu“. Abi tarpusavio lentelės yra sujungtos su „Delete Cascade“ funkcija, naudojant svetimą raktą. Šiuo metu „užsakymas“ yra pagrindinė lentelė, o antrinė - „klientas“. Su pridedamais scenarijais ir atitinkamais įrašais turite sukonstruoti abi lenteles. Norėdami pasirinkti duomenų bazę, kurioje norite dirbti, arba sukurti lenteles, naudokite žemiau esančią komandą „use“. Čia „duomenys“ yra duomenų bazė, kurią naudojame.

>> naudoti duomenis;

Sukurti tėvų lentelę:

Pirmiausia turite sukurti lentelę „order“ kartu su jos laukais naudodami komandą CREATE TABLE, kaip parodyta žemiau esančioje užklausoje. Stulpelis „ID“ bus naudojamas kitoje lentelėje „klientas“ kaip užsienio raktas.

>> SUKURTI LENTELĖS duomenis.užsakymas (ID INT PAGRINDINIS RAKTAS AUTO_INCREMENT NOT NULL, prekė VARCHAR (50) NOT NULL, kaina VARCHAR (50) NOT NULL);

Pridėkime keletą duomenų prie šios lentelės. Turite vykdyti žemiau pateiktas „MySQL“ komandinės eilutės apvalkalo užklausas ir paleisti kiekvieną komandą atskirai komandinėje eilutėje arba tiesiog vienu žingsniu pridėti visas komandų eilutės komandas. Norėdami pridėti duomenų prie lentelės, taip pat galite naudoti „MySQL Workbench“ GUI.

Dabar patikrinkime lentelės „tvarka“, įdėję į ją reikšmes. Šiam tikslui galite naudoti komandą SELECT taip:

>> PASIRINKTI * IŠ duomenų.įsakymas;

Matote, kad duomenys buvo sėkmingai išsaugoti lentelėje „tvarka“, kaip tikėtasi.

Sukurkite antrinę lentelę naudodami „DELETE Cascade“:

Dabar atėjo eilė sukurti kitą lentelę, pavadintą „klientas“.

Pirmiausia turite įvesti raktinį žodį „CREATE“ kartu su lentelės pavadinimu. Tada turite pridėti laukų arba stulpelių pavadinimus kartu su jų duomenų tipais. Paskutinį stulpelį, kuris bus naudojamas kaip užsienio raktas šioje lentelėje, turite pavadinti taip pat, kaip jį pavadinote ankstesnėje lentelėje. Kaip žinote, lentelės „užsakymas“ stulpelis „ID“ buvo naudojamas kaip užsienio raktas lentelėje „klientas“ kaip „užsakymo ID“. Po to turite pridėti raktinį žodį „SUSITRAUKIMAS“, kuris naudojamas inicijuojant UŽSIENIO raktą, kartu su ankstesnės lentelės nuoroda. Dabar jūs turite naudoti sakinį „DELETE CASCADE“ kartu su raktiniu žodžiu „ON“.

>> SUKURTI LENTELĖS duomenis.klientas (CustID INT NOT NULL.užsakymas (ID) ON DELETE CASCADE);

Sukūrus lentelę ir šioje lentelėje sėkmingai atlikus „DELETE CASCADE“, laikas į šią lentelę įterpti keletą reikšmių. Norėdami tai padaryti, pabandykite po vieną „MySQL“ komandinės eilutės kliento apvalkale pateiktas instrukcijas.

Vėliau įterpkite užklausas. Būtina patikrinti lentelę, ar duomenys sėkmingai pridėti, ar ne. Taigi pabandykite atlikti šią komandą žemiau:

>> PASIRINKTI * IŠ duomenų.klientas;

Čia galite pažvelgti į lentelės išvestį, kad duomenys jai priskirti efektyviai ir be klaidų ar klaidų.

Ištrinti įrašus:

Dabar, kai ištrinsite bet kokius duomenis ar eilutes iš tėvų lentelės, jie taip pat ištrins duomenis arba eilutę iš antrinės lentelės dėl įgalinto DELETE CASCADE pašaliniame rakte, nurodytame antrinėje lentelėje. Pirmiausia išbandykime užklausą DELETE, tada patikrinkime rezultatus. Ištrinsime duomenis iš lentelės „order“, kur „ID“ yra „11“. Jei tas pats „ID“ bus pateiktas lentelėje „klientas“ užsienio rakto stulpelyje „Užsakymo ID“, tada lentelės „klientas“ santykinė eilutė ar duomenys taip pat bus ištrinti. Pabandykite tai padaryti komandinėje eilutėje:

>> IŠTRINTI IŠ duomenų. užsakymas WHERE ID = '11';

Pirmiausia patikrinkime tėvų lentelę. Tada įveskite žemiau esančią komandą SELECT, kad gautumėte likusius lentelės „order“ įrašus, ištrynus kai kuriuos įrašus. Pamatysite, kad lentelės įrašas, kurio „ID“ buvo „11“, buvo sėkmingai ištrintas iš šios lentelės. Tai reiškia, kad tos pačios ID vertės „11“ santykiniai įrašai taip pat būtų ištrinti iš antrinės lentelės.

>> PASIRINKTI * IŠ duomenų.įsakymas;

Vaiko lentelės įrašų gavimas naudojant komandą SELECT yra toks pat paprastas, kaip ir anksčiau. Tiesiog pabandykite toliau pateiktą komandą ir turėsite rezultatus.

Gavę rezultatus galite pamatyti, kad įrašas „CustID“, kurio vertė „1“, buvo visiškai ištrinta. Taip yra todėl, kad stulpelio „OrderID“ pirmoje eilutėje yra „11“ vertė, todėl ši eilutė ištrinama.

>> PASIRINKTI * IŠ duomenų.klientas;

Kai bandysite išmesti tėvų lentelę naudodami komandą DROP, „MySQL“ neleis to padaryti. Taip yra todėl, kad pagrindinė lentelė įgalino joje „DELETE CASCADE“. Taigi, norėdami mesti lentelę, pirmiausia turite iš jos pašalinti DELETE CASCADE.

Išvada:

Mes atlikome paaiškinimą apie „DELETE CASCADE“ naudojimą „MySQL“. Kad būtų aiškiau, išbandykite daugiau pavyzdžių.

Kaip sukurti žaidimą „Linux“
Prieš dešimtmetį nedaugelis „Linux“ vartotojų numatė, kad jų mėgstama operacinė sistema vieną dieną bus populiari komercinių vaizdo žaidimų žaidimų pl...
Atvirojo kodo komercinių žaidimų variklių uostai
Nemokami atvirojo kodo ir įvairių platformų žaidimų varikliai gali būti naudojami žaidžiant senus ir kai kuriuos gana naujus žaidimų pavadinimus. Šiam...
Geriausi „Linux“ komandinės eilutės žaidimai
Komandų eilutė yra ne tik jūsų didžiausias sąjungininkas naudojant „Linux“, bet ir pramogų šaltinis, nes ją galite naudoti norėdami žaisti daug įdomių...