MySQL MariaDB

MySQL SLETT CASCADE

MySQL SLETT CASCADE
På MySQL brukes utsagnet OM SLETT CASCADE til å ta ut tilsvarende rader fra underordnet tabell hver gang rader blir fjernet fra overordnet tabell. Dette er en relativ type utenlandsk nøkkelrelatert kontekstuell atferd.

Forutsatt at du har produsert to tabeller med UTENLANDSK Nøkkel inne i et utenlandsk nøkkelforhold, som gjengir en forelder og barnebord. Etter det bør en beregnet for en UTENLANDSK NØKKEL bli løst for at en annen skal lykkes gjennom de kaskadeaktivitetene, så spesifiserer vi en ON DELETE CASCADE-setning. Kanskje hvis en enkelt UTENLANDSK KEY-setning bestemmer ON DELETE CASCADE, vil kaskadefunksjonene utløse et unntak.

La oss forstå hvordan vi i hele MySQL-tabellen kan bruke ON DELETE CASCADE-setningen.

Du må åpne den nylig installerte MySQL-kommandolinjeklienten Shell for å fortsette arbeidet. Ved åpning vil du bli bedt om å skrive inn passordet ditt for å fortsette å bruke MySQL kommandolinjeklientskall, som vedlagt nedenfor.

Deretter skal vi lage to tabeller kalt "ordre" og "kunde". Begge de gjensidige tabellene er koblet til slett kaskadefunksjonen ved hjelp av en fremmed nøkkel. En "ordre" er overordnet bord på dette punktet, og underordnet bord er "kunden". Med de medfølgende skriptene, sammen med respektive poster, må du konstruere begge tabellene. Bruk kommandoen “bruk” nedenfor for å velge databasen du vil jobbe i, eller opprette tabeller i. Her er "data" databasen vi bruker.

>> bruke data;

Lag foreldretabell:

Først og fremst må du opprette tabellen "rekkefølge" sammen med feltene ved hjelp av CREATE TABLE-kommandoen, som vist i spørringen nedenfor. Kolonnen “ID” vil bli brukt i neste tabell “kunde” som en utenlandsk nøkkel.

>> OPPRETT TABELLdata.ordre (ID INT PRIMÆR NØKKEL AUTO_INCREMENT IKKE NULL, Artikkel VARCHAR (50) IKKE NULL, Pris VARCHAR (50) IKKE NULL);

La oss legge til noen data i denne tabellen. Du må utføre de nedenfor viste spørsmålene i MySQL kommandolinjeskall og kjøre hver kommando individuelt på 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 "rekkefølge" 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 er lagret i tabellen "rekkefølge" som forventet.

Lag barnebord med DELETE Cascade:

Nå er det turen til at det opprettes et nytt bord kalt “kunde”.

Først må du skrive inn "OPPRETT" nøkkelord sammen med tabellnavnet. Deretter må du legge til felt- eller kolonnenavn sammen med datatypene. Du må navngi den siste kolonnen, som vil bli brukt som fremmednøkkel i denne tabellen, den samme som du kalte den i forrige tabell. Som du vet har kolonnen "ID" fra tabellen "ordre" blitt brukt som fremmednøkkel i tabellen "kunde" som "OrderID". Etter det må du legge til nøkkelordet “CONSTRAINT”, som brukes til å initialisere UTENLANDSK nøkkel, sammen med referansen til forrige tabell. Nå må du bruke setningen “SLETT CASCADE” sammen med søkeordet “PÅ”.

>> OPPRETT TABELLdata.kunde (CustID INT IKKE NULL AUTO_INCREMENT PRIMÆRE NØKKEL, Navn VARCHAR (45) IKKE NULL, OrderID INT IKKE NULL, KONSTRAINT order_id_fk UTENLANDSK Nøkkel (OrderID) REFERANSER data.ordre (ID) PÅ SLETTE CASCADE);

Etter at tabellen er opprettet, og DELETE CASCADE har blitt utført 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.

Gjør deretter innsettingen av spørsmål. Det er et poeng å sjekke tabellen om dataene har blitt lagt til eller ikke. Så prøv denne kommandoen nedenfor for å gjøre dette:

>> VELG * FRA data.kunde;

Her kan du få et glimt av tabellutdataene som dataene tildeles effektivt og uten feil eller feil.

Slett poster:

Nå når du sletter data eller rad fra foreldretabellen, vil den også slette dataene eller raden fra underordnet tabell på grunn av den aktiverte SLETT KASKADEN på den utenlandske nøkkelen som er nevnt i underordnede tabellen. La oss prøve DELETE-spørringen først, og deretter sjekke resultatene. Vi vil slette dataene fra tabellen "rekkefølge" der "ID" er "11". Hvis den samme "ID" vil bli funnet i tabellen "kunde" i kolonnen for utenlandsk nøkkel, "OrderID", blir den relative raden eller dataene i tabellen "kunde" også slettet. Prøv kommandoen nedenfor på kommandolinjen for å gjøre det:

>> SLETT FRA data. bestill WHERE ID = '11';

La oss først sjekke foreldretabellen. Skriv deretter inn SELECT-kommandoen nedenfor for å hente de gjenværende postene i tabellen "ordre" etter at noen poster er slettet. Du vil se at posten til tabellen, der "ID" var "11", har blitt slettet fra denne tabellen. Dette betyr at de relative postene med samme ID-verdi, “11”, også vil bli slettet fra underordnede tabell.

>> VELG * FRA data.rekkefølge;

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

Når du får resultatene, kan du se at posten "CustID" med verdien "1" som er fullstendig slettet. Dette er fordi kolonnen "OrderID" har verdien "11" i den første raden, 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 foreldretabellen har aktivert DELETE CASCADE på den. Så for å slippe tabellen, må du først fjerne DELETE CASCADE fra den.

Konklusjon:

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

Vulkan for Linux-brukere
Med hver nye generasjon grafikkort ser vi spillutviklere skyve grensene for grafisk troskap og komme et skritt nærmere fotorealisme. Men til tross for...
OpenTTD vs Simutrans
Å lage din egen transportsimulering kan være morsom, avslappende og ekstremt fristende. Derfor må du sørge for at du prøver så mange spill som mulig f...
OpenTTD Tutorial
OpenTTD er et av de mest populære forretningssimuleringsspillene der ute. I dette spillet må du lage en fantastisk transportvirksomhet. Du begynner im...