MySQL MariaDB

MySQL RADERAR CASCADE

MySQL RADERAR CASCADE
På MySQL används uttalandet ON DELETE CASCADE för att ta bort motsvarande rader från underordnade tabellen implicit när rader tas bort från modertabellen. Detta är en relativ typ av främmande nyckelrelaterat sammanhangsbeteende.

Om du antar att du har tagit fram två tabeller med en UTLÄNDSK NYCKEL i ett främmande nyckelförhållande, vilket gör att en förälder och underordnad tabell. Därefter ska en avsedd för en UTLÄNDSK NYCKEL fixas för att en annan ska lyckas under hela kaskadaktiviteterna, sedan anger vi ett ON DELETE CASCADE-uttalande. Kanske om ett enda utländskt nyckeluttalande bestämmer ON DELETE CASCADE, kommer kaskadfunktionerna att utlösa ett undantag.

Låt oss förstå hur vi i hela MySQL-tabellen kan använda uttalandet ON DELETE CASCADE.

Du måste öppna den nyligen installerade MySQL-kommandoraden Client Shell för att fortsätta arbetet. När du öppnar kommer du att bli ombedd att ange ditt lösenord för att fortsätta använda MySQL kommandoradsklientskal, som bifogas nedan.

Därefter ska vi bygga två tabeller som heter "order" och "kund". Båda de ömsesidiga tabellerna är kopplade till borttagningskaskadfunktionen med en främmande nyckel. En "order" är överordnad tabell vid denna tidpunkt, och underordnad tabell är "kund". Med de medföljande skripten, tillsammans med respektive poster, måste du konstruera båda tabellerna. Använd kommandot "använd" nedan för att välja den databas du vill arbeta i eller skapa tabeller inom. Här är "data" den databas vi använder.

>> använda data;

Skapa överordnad tabell:

Först och främst måste du skapa tabellen "order" tillsammans med dess fält med kommandot CREATE TABLE, som visas i frågan nedan. Kolumnen "ID" kommer att användas i nästa tabell "kund" som en utländsk nyckel.

>> SKAPA TABELLdata.order (ID INT PRIMÄR NYCKEL AUTO_INCREMENT INTE NULL, Artikel VARCHAR (50) INTE NULL, Pris VARCHAR (50) NOT NULL);

Låt oss lägga till lite data i den här tabellen. Du måste utföra de nedan visade frågorna i MySQL-kommandoradsskalet och köra varje kommando individuellt på kommandoraden eller helt enkelt lägga till alla kommandon i kommandoraden i ett enda steg. Du kan också använda MySQL Workbench GUI för att lägga till data i tabellen.

Låt oss nu kontrollera tabellen "ordning" efter att ha lagt in värden i den. Du kan använda kommandot SELECT för detta ändamål enligt följande:

>> VÄLJ * FRÅN data.ordning;

Du kan se att data har sparats i tabellen "ordning" som förväntat.

Skapa underordnad tabell med DELETE Cascade:

Nu är det turen att skapa en annan tabell som heter ”kund”.

Först måste du skriva nyckelordet ”CREATE” tillsammans med tabellnamnet. Sedan måste du lägga till fält- eller kolumnnamn tillsammans med deras datatyper. Du måste namnge den sista kolumnen, som kommer att användas som främmande nyckel i denna tabell, samma som du namngav den i föregående tabell. Som ni vet har kolumnen "ID" från tabellen "order" använts som utländsk nyckel i tabellen "kund" som "OrderID". Därefter måste du lägga till nyckelordet "CONSTRAINT", som används för att initialisera FOREIGN-nyckeln, tillsammans med referensen till föregående tabell. Nu måste du använda ”DELETE CASCADE” uttalande tillsammans med ”ON” nyckelordet.

>> SKAPA TABELLdata.kund (CustID INT INTE NULL AUTO_INCREMENT PRIMÄR NYCKEL, Namn VARCHAR (45) INTE NULL, OrderID INT INTE NULL, CONSTRAINT order_id_fk UTLÄNDSK NYCKEL (OrderID) REFERENSER data.order (ID) PÅ RADERA CASCADE);

Efter att tabellen har skapats och DELETE CASCADE har utförts på den här tabellen är det dags att infoga några värden i den här tabellen. Försök med nedanstående instruktioner en efter en i MySQL-kommandoradsklienten för att göra detta.

Gör sedan infogning av frågor. Det är en sak att kontrollera tabellen om data har lagts till eller inte. Så prova detta kommando nedan för att göra detta:

>> VÄLJ * FRÅN data.kund;

Här kan du få en glimt av tabellutmatningen som data tilldelas effektivt till den och utan något misstag eller fel.

Ta bort poster:

Nu när du tar bort data eller rader från överordnadstabellen kommer den också att ta bort data eller raden från underordnade tabellen på grund av den aktiverade RADERA CASCADE på den främmande nyckeln som nämns i underordnade tabellen. Låt oss testa DELETE-frågan först och sedan kontrollera resultaten. Vi kommer att radera data från tabellen "ordning" där "ID" är "11". Om samma "ID" finns i tabellen "kund" i kolumnen för utländsk nyckel, "OrderID", kommer även den relativa raden eller data i tabellen "kund" att raderas. Försök med kommandot nedan på kommandoraden för att göra det:

>> RADERA FRÅN data. beställ WHERE ID = '11';

Låt oss först kontrollera överordnadstabellen. Skriv sedan SELECT-kommandot som finns nedan för att hämta återstående poster i tabellen "order" "efter borttagning av vissa poster. Du kommer att se att posten för tabellen, där "ID" var "11", har tagits bort från den här tabellen. Detta innebär att de relativa posterna för samma ID-värde, "11", också raderas från underordnade tabellen.

>> VÄLJ * FRÅN data.ordning;

Att hämta poster för underordnade tabeller med SELECT-kommandot är lika enkelt som du gjorde tidigare. Försök bara med kommandot nedan så får du resultaten.

När du får resultaten kan du se att posten "CustID" med värdet "1" som har raderats helt. Detta beror på att kolumnen "OrderID" har värdet "11" i sin första rad, vilket leder till radering av den raden.

>> VÄLJ * FRÅN data.kund;

När du försöker släppa överordnadstabellen med DROP-kommandot kommer MySQL att hindra dig från att göra det. Detta beror på att överordnadstabellen har aktiverat DELETE CASCADE på den. Så för att tappa tabellen måste du först ta bort DELETE CASCADE från den.

Slutsats:

Vi har gjort med förklaringen av DELETE CASCADE i MySQL. För att göra det tydligare, prova fler exempel i slutet.

Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...
HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...