MySQL MariaDB

MySQL dzēst kaskādi

MySQL dzēst kaskādi
MySQL tiek izmantots paziņojums PAR DZĒST KASKĀDI, lai netieši izņemtu atbilstošās rindas no pakārtotās tabulas ikreiz, kad rindas tiek noņemtas no vecāku tabulas. Tas ir relatīvs ar ārzemju atslēgu saistīts kontekstuālās uzvedības veids.

Pieņemot, ka esat izveidojis divas tabulas ar FOREIGN KEY ārvalstu atslēgu attiecībās, padarot vienu vecāku un bērnu tabulu. Pēc tam ir jānosaka, kas paredzēts vienam ĀRZEMJU ATSLĒGAM, lai otrs būtu veiksmīgs visu kaskādes darbību laikā, pēc tam mēs norādām priekšrakstu ON DELETE CASCADE. Varbūt, ja viens FOREIGN KEY paziņojums nosaka ON DELETE CASCADE, kaskādes funkcijas izraisīs izņēmumu.

Sapratīsim, kā visā MySQL tabulā mēs varētu izmantot paziņojumu ON DELETE CASCADE.

Lai turpinātu darbu, jums jāatver nesen instalētā MySQL komandrindas klienta čaula. Atverot, jums tiks lūgts ievadīt paroli, lai turpinātu izmantot MySQL komandrindas klienta čaulu, kā norādīts zemāk.

Pēc tam mēs izveidosim divas tabulas ar nosaukumu “pasūtījums” un “klients”. Abas savstarpējās tabulas ir saistītas ar dzēšanas kaskādes funkciju, izmantojot svešu atslēgu. “Pasūtījums” ir vecāku tabula šajā brīdī, un pakārtotā tabula ir “klients”. Ar pievienotajiem skriptiem kopā ar attiecīgajiem ierakstiem jums ir jākonstruē abas tabulas. Izmantojiet zemāk esošo komandu “use”, lai atlasītu datu bāzi, kurā vēlaties strādāt, vai izveidotu tajā tabulas. Šeit “dati” ir datu bāze, kuru mēs izmantojam.

>> izmantot datus;

Izveidot vecāku tabulu:

Vispirms jums jāizveido tabula “order” kopā ar tās laukiem, izmantojot komandu CREATE TABLE, kā parādīts zemāk esošajā vaicājumā. Kolonna “ID” tiks izmantota nākamajā tabulā “klients” kā ārvalstu atslēga.

>> IZVEIDOT TABULAS datus.pasūtījums (ID INT PRIMARY KEY AUTO_INCREMENT NOT NULL, Item VARCHAR (50) NOT NULL, Price VARCHAR (50) NOT NULL);

Pievienosim šai tabulai dažus datus. Jums MySQL komandrindas čaulā ir jāizpilda zemāk parādītie vaicājumi un katra komanda jāpalaiž atsevišķi komandrindā vai vienkārši jāpievieno visas komandrindas komandas vienā darbībā. Lai pievienotu datus tabulai, varat izmantot arī MySQL Workbench GUI.

Pēc vērtību ievietošanas pārbaudīsim tabulas “pasūtījumu”. Šim nolūkam komandu SELECT varat izmantot šādi:

>> SELECT * FROM dati.kārtība;

Var redzēt, ka dati ir veiksmīgi saglabāti tabulā “secība”, kā paredzēts.

Izveidojiet pakārtoto tabulu ar DELETE Cascade:

Tagad ir kārta izveidot vēl vienu tabulu ar nosaukumu “klients”.

Pirmkārt, jums jāievada atslēgvārds “CREATE” kopā ar tabulas nosaukumu. Pēc tam jums jāpievieno lauku vai kolonnu nosaukumi kopā ar to datu tipiem. Jums jānosauc pēdējā kolonna, kas šajā tabulā tiks izmantota kā ārējā atslēga, tāpat kā jūs to nosaucāt iepriekšējā tabulā. Kā jūs zināt, kolonnas “ID” tabulā “pasūtījums” tabulā “klients” ir izmantota ārzemju atslēga kā “pasūtījuma ID”. Pēc tam jums jāpievieno atslēgvārds “IEROBEŽOJUMS”, ko izmanto FOREIGN atslēgas inicializēšanai, kopā ar iepriekšējās tabulas atsauci. Tagad jums jāizmanto paziņojums “DELETE CASCADE” kopā ar atslēgvārdu “ON”.

>> IZVEIDOT TABULAS datus.klients (CustID INT NOT NULL.pasūtījums (ID) PAR DELETE CASCADE);

Pēc tam, kad tabula ir izveidota un šajā tabulā ir veiksmīgi izpildīta DELETE CASCADE, ir pienācis laiks šajā tabulā ievietot dažas vērtības. Lai to izdarītu, izmēģiniet MySQL komandrindas klienta čaulā pa vienam.

Pēc tam veiciet vaicājumu ievietošanu. Ir vērts pārbaudīt tabulu, vai dati ir veiksmīgi pievienoti vai nē. Tāpēc izmēģiniet šo komandu zemāk:

>> SELECT * FROM dati.klients;

Šeit jūs varat ieskatīties tabulas izvadā, ka dati ir efektīvi tam piešķirti un bez kļūdām vai kļūdām.

Dzēst ierakstus:

Dzēšot visus datus vai rindas no vecāku tabulas, tas arī izdzēsīs datus vai rindu no pakārtotās tabulas, jo pakārtotajā tabulā minētajā ārzemju atslēgā ir iespējota Dzēst kaskādi. Vispirms izmēģināsim vaicājumu DELETE, pēc tam pārbaudiet rezultātus. Mēs izdzēsīsim datus no tabulas “order”, kur “ID” ir “11”. Ja tas pats “ID” tiks atrasts tabulā “klients” ārzemju atslēgas slejā “OrderID”, tad tiks izdzēsta arī attiecīgā rinda vai dati tabulā “klients”. Lai to izdarītu, izmēģiniet komandu komandā zemāk esošo komandu:

>> Dzēst datus. pasūtījums WHERE ID = '11';

Vispirms pārbaudīsim vecāku tabulu. Pēc tam ierakstiet zemāk esošo komandu SELECT, lai pēc dažu ierakstu dzēšanas izgūtu atlikušos tabulas “order” ierakstus. Jūs redzēsiet, ka tabulas ieraksts, kurā “ID” bija “11”, ir veiksmīgi izdzēsts no šīs tabulas. Tas nozīmē, ka vienas un tās pašas ID vērtības “11” relatīvie ieraksti tiktu izdzēsti arī no pakārtotās tabulas.

>> SELECT * FROM dati.kārtība;

Bērna tabulas ierakstu ielāde, izmantojot komandu SELECT, ir tikpat vienkārša kā jūs iepriekš. Vienkārši izmēģiniet zemāk esošo komandu, un jums būs rezultāti.

Iegūstot rezultātus, varat redzēt, ka ieraksts “CustID” ar vērtību “1” ir pilnībā izdzēsts. Tas ir tāpēc, ka kolonnas “OrderID” pirmajā rindā ir vērtība “11”, kas noved pie šīs rindas dzēšanas.

>> SELECT * FROM dati.klients;

Mēģinot nomest vecāku tabulu, izmantojot komandu DROP, MySQL neļaus jums to darīt. Tas ir tāpēc, ka vecāku tabula ir iespējojusi DELETE CASCADE tajā. Tātad, lai nomestu tabulu, vispirms no tā ir jānoņem DELETE CASCADE.

Secinājums:

Mēs esam izdarījuši skaidrojumu par DELETE CASCADE MySQL. Lai tas būtu skaidrāks, izmēģiniet citus piemērus savā galā.

Kā izmantot AutoKey, lai automatizētu Linux spēles
AutoKey ir darbvirsmas automatizācijas lietderība operētājsistēmām Linux un X11, kas ieprogrammēta Python 3, GTK un Qt. Izmantojot skriptu un MACRO fu...
Kā parādīt FPS skaitītāju Linux spēlēs
Linux spēles ieguva lielu impulsu, kad Valve 2012. gadā paziņoja par Linux atbalstu Steam klientam un viņu spēlēm. Kopš tā laika daudzas AAA un indie ...
Kā lejupielādēt un atskaņot Sid Meier Civilization VI operētājsistēmā Linux
Ievads spēlē Civilization 6 ir mūsdienīga klasiskā koncepcija, kas ieviesta Age of Empires spēļu sērijā. Ideja bija diezgan vienkārša; jūs sāktu pašā ...