Mysql slett kaskade

Mysql slett kaskade
På MySQL brukes uttalelsen om Delete Cascade til å ta ut tilsvarende rader fra barnebordet implisitt når rader blir fjernet fra overordnede bord. Dette er en relativ type utenlandsk nøkkelrelatert kontekstuell oppførsel.

Forutsatt at du har produsert to tabeller med en fremmed nøkkel i et utenlandsk nøkkelforhold, og gjengi ett foreldre og barnebord. Etter det skal en beregnet på en fremmed nøkkel fastsettes for en annen for å lykkes i hele de kaskaderende aktivitetene, så spesifiserer vi en på Delete Cascade -uttalelsen. Kanskje hvis en enkelt utenlandsk nøkkeluttalelse bestemmer On Delete -kaskaden, vil de nedbrytende funksjonene utløse et unntak.

La oss forstå hvordan vi i hele MySQL -tabellen kan bruke On Delete Cascade -uttalelsen.

Du må åpne den nylig installerte MySQL-kommandolinjeklientskallet for å fortsette med arbeid. Ved åpning vil du bli bedt om å oppgi passordet ditt for å fortsette å bruke MySQL Command-line Client Shell, som vedlagt nedenfor.

Deretter skal vi bygge to tabeller kalt "Order" og "kunde". Begge de gjensidige tabellene er koblet til Delete Cascade -funksjonen ved å bruke en fremmed nøkkel. En "ordre" er overordnet bord på dette tidspunktet, og barnebordet er "kunden". Med de medfølgende skriptene, sammen med respektive poster, må du konstruere begge tabellene. Bruk kommandoen “Bruk” til å velge databasen du vil jobbe i eller opprette tabeller i. Her er "data" databasen vi bruker.

>> Bruk data;

Lag overordnede tabell:

Først av alt må du opprette tabellen "Order" sammen med feltene ved å bruke CREATE TABLE -kommandoen, som vist i spørringen nedenfor. Kolonnen “ID” vil bli brukt i neste tabell “Kunde” som en fremmed nøkkel.

>> Opprett tabelldata.BESTILLING (ID INT Primærnøkkel Auto_Increment Ikke null, varen varchar (50) ikke null, pris varchar (50) ikke null);

La oss legge til noen data i denne tabellen. Du må utføre spørsmålene under stilte spørsmål i MySQL-kommandolinjeskallet og kjøre hver kommando individuelt i kommandolinjen eller bare legge til alle kommandoene i kommandolinjen i et enkelt trinn. Du kan også bruke MySQL Workbench GUI for å legge til data i tabellen.

La oss nå sjekke tabellen "Bestill" etter å ha satt verdier i den. Du kan bruke SELECT -kommandoen til dette formålet som følger:

>> Velg * fra data.rekkefølge;

Du kan se at dataene har blitt lagret i tabellen "orden" som forventet.

Lag barnebord med slett kaskade:

Nå er det svingen for et annet bord som heter "kunde" som skal opprettes.

Først må du skrive inn "Opprett" nøkkelordet sammen med tabellnavnet. Deretter må du legge til felt- eller kolonnenavn sammen med datatypene deres. Du må navngi den siste kolonnen, som vil bli brukt som den utenlandske nøkkelen i denne tabellen, den samme som du kalte den i forrige tabell. Som du vet har kolonnen “ID” fra tabellen “Order” blitt brukt som den utenlandske nøkkelen i tabellen “Kunde” som “OrderID”. Etter det må du legge til "Begrensning" -tnøkkelordet, som brukes til å initialisere den utenlandske nøkkelen, sammen med referansen til forrige tabell. Nå må du bruke "Delete Cascade" -uttalelsen sammen med "ON" nøkkelordet.

>> Opprett tabelldata.Kunde (Custid int Not Null Auto_Increment Primary Key, Name VARCHAR (45) Not NULL, OrderID Int Not Null, Constraint Order_ID_FK Foreign Key (OrderID) Referanser Data.ordre (id) på slett kaskade);

Etter at tabellen er opprettet, og slettekaskaden har blitt utøvd på denne tabellen, er det på tide å sette inn noen verdier i denne tabellen. Prøv instruksjonene nedenfor en etter en i MySQL-kommandolinjeklientskallet for å gjøre dette.

Deretter kan du legge inn spørsmål. Det er et poeng å sjekke tabellen om dataene har blitt lagt til eller ikke. Så prøv dette under-kommando for å gjøre dette:

>> Velg * fra data.kunde;

Her kan du få et glimt av tabellutgangen at dataene blir tildelt effektivt og uten feil eller feil.

Slett poster:

Når du sletter data eller rad fra overordnede tabellen, vil den også slette dataene eller raden fra barnebordet på grunn av den aktiverte slettekaskaden på den utenlandske nøkkelen som er nevnt i barnebordet. La oss prøve Delete -spørringen først, og deretter sjekke resultatene. Vi vil slette dataene fra tabellen "Order" der "ID" er "11". Hvis den samme "ID" vil bli funnet i tabellen "Kunde" i den utenlandske nøkkelkolonnen, "OrderId", vil den relative raden eller dataene i tabellen "kunde" bli slettet. Prøv det under-kommando i kommandolinjen for å gjøre det:

>> Slett fra data. bestill der id = '11';

La oss først sjekke overordnede tabellen. Skriv deretter SELECT -kommandoen som er funnet nedenfor for å hente de gjenværende postene til tabellen "Order" "etter sletting av noen poster. Du vil se at posten til tabellen, der "ID" var "11", har blitt slettet med hell fra denne tabellen. Dette betyr at de relative registreringene av samme ID -verdi, “11”, vil også bli slettet fra barnebordet.

>> Velg * fra data.rekkefølge;

Å hente postene til barnebordet ved hjelp av SELECT -kommandoen er så enkelt som du gjorde før. Bare prøv kommandoen nedenfor, så har du resultatene.

Når du får resultatene, kan du se at registreringen av "Custid" har en verdi av "1" som er slettet fullt ut. Dette er fordi kolonnen “OrderId” har en verdi på “11” i sin første rad, noe som fører til sletting av den raden.

>> Velg * fra data.kunde;

Når du prøver å slippe foreldretabellen ved hjelp av drop -kommandoen, vil MySQL forhindre deg i å gjøre det. Dette er fordi foreldrebordet har muliggjort slettekaskaden på den. Så for å slippe bordet, må du først fjerne slettekaskaden fra den.

Konklusjon:

Vi har gjort med forklaringen på Delete Cascade i MySQL. For å gjøre det tydeligere, prøv flere eksempler på slutten.