MySQL MariaDB

Изтриване на каскада на MySQL

Изтриване на каскада на MySQL
В MySQL изразът ON DELETE CASCADE се използва за изваждане на съответните редове от дъщерната таблица имплицитно, когато редовете бъдат премахнати от родителската таблица. Това е относителен тип контекстно поведение, свързано с външен ключ.

Ако приемем, че сте създали две таблици с ВЪНШЕН КЛЮЧ във връзка с външен ключ, рендиране на една родителска и дъщерна таблица. След това трябва да се определи предназначен за един ЧУЖДЕСТРЕН КЛЮЧ друг, за да бъде успешен по време на каскадните дейности, след което посочваме изявление ON DELETE CASCADE. Може би ако един оператор FOREIGN KEY определя ON DELETE CASCADE, каскадните функции ще задействат изключение.

Нека разберем как в таблицата на MySQL можем да използваме израза ON DELETE CASCADE.

Трябва да отворите наскоро инсталираната клиентска обвивка на командния ред на MySQL, за да продължите с работата. При отваряне ще бъдете помолени да въведете паролата си, за да продължите да използвате черупката на клиентския ред на MySQL, както е приложено по-долу.

След това ще изградим две таблици, наречени „поръчка“ и „клиент“. И двете взаимни таблици са свързани с функцията за каскадно изтриване, използвайки външен ключ. В този момент „поръчка“ е родителската таблица, а дъщерната таблица е „клиентът“. Със съпътстващите скриптове, заедно със съответните записи, трябва да изградите и двете таблици. Използвайте командата "use" по-долу, за да изберете базата данни, в която искате да работите или да създавате таблици в нея. Тук „данни“ е базата данни, която използваме.

>> използвайте данни;

Създаване на родителска таблица:

На първо място, трябва да създадете таблицата “order” заедно с нейните полета, като използвате командата CREATE TABLE, както е показано в заявката по-долу. Графата „ID“ ще се използва в следващата таблица „клиент“ като външен ключ.

>> СЪЗДАЙТЕ ТАБЛИЦА данни.поръчка (ID INT ПЪРВИЧЕН КЛЮЧ АВТОМАТИЧНО ИНКРЕНТИРАНЕ НЕ НУЛО, Артикул VARCHAR (50) НЕ НУЛО, Цена VARCHAR (50) НЕ НУЛО);

Нека добавим някои данни към тази таблица. Трябва да изпълните показаните по-долу заявки в черупката на командния ред на MySQL и да изпълните всяка команда поотделно в командния ред или просто да добавите всички команди в командния ред в една стъпка. Можете също да използвате GUI на MySQL Workbench, за да добавите данни към таблицата.

Сега нека проверим таблицата „ред“, след като поставим стойности в нея. Можете да използвате командата SELECT за тази цел, както следва:

>> ИЗБЕРЕТЕ * ОТ данни.поръчка;

Можете да видите, че данните са успешно записани в таблицата „ред“, както се очаква.

Създайте дъщерна таблица с DELETE Cascade:

Сега е ред да се създаде друга таблица, наречена „клиент“.

Първо трябва да въведете ключовата дума „CREATE“ заедно с името на таблицата. След това трябва да добавите имена на полета или колони заедно с техните типове данни. Трябва да назовете последната колона, която ще се използва като външен ключ в тази таблица, същото както сте я посочили в предишната таблица. Както знаете, колоната „ID“ от таблица „order“ е използвана като външен ключ в таблицата „клиент“ като „OrderID“. След това трябва да добавите ключовата дума “CONSTRAINT”, която се използва за инициализиране на FOREIGN Key, заедно с препратката към предишната таблица. Сега трябва да използвате израза „DELETE CASCADE“ заедно с ключовата дума „ON“.

>> СЪЗДАЙТЕ ТАБЛИЦА данни.клиент (CustID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR (45) NOT NULL, OrderID INT NOT NULL, CONSTRAINT order_id_fk ЧУЖДЕН КЛЮЧ (OrderID) РЕФЕРЕНЦИИ.поръчка (ID) НА ИЗТРИВАНЕ НА КАСКАДА);

След като таблицата е създадена и DELETE CASCADE е извършена успешно върху тази таблица, е време да вмъкнете някои стойности в тази таблица. Опитайте инструкциите по-долу една по една в клиентската обвивка на командния ред на MySQL, за да направите това.

Впоследствие направете вмъкването на заявки. Важно е да проверите таблицата дали данните са добавени успешно или не. Така че опитайте тази команда по-долу, за да направите това:

>> ИЗБЕРЕТЕ * ОТ данни.клиент;

Тук можете да погледнете изхода на таблицата, че данните му се присвояват ефективно и без никаква грешка или грешка.

Изтриване на записи:

Сега, когато изтриете всякакви данни или ред от родителската таблица, той също ще изтрие данните или реда от дъщерната таблица поради активираното ИЗТРИВАНЕ КАСКАДА на външния ключ, споменат в дъщерната таблица. Нека първо изпробваме заявката DELETE, след което да проверим резултатите. Ще изтрием данните от таблицата „поръчка“, където „ID“ е „11“. Ако същият „ID“ ще бъде намерен в таблицата „клиент“ в колоната с външен ключ „OrderID“, тогава съответният ред или данни в таблицата „клиент“ също ще бъдат изтрити. Опитайте командата по-долу в командния ред, за да направите това:

>> ИЗТРИВАНЕ ОТ данните. поръчка WHERE ID = '11';

Първо, нека проверим родителската таблица. След това въведете командата SELECT, намерена по-долу, за да извлечете останалите записи от таблицата „ред“ след изтриването на някои записи. Ще видите, че записът на таблицата, където “ID” е “11”, е успешно изтрит от тази таблица. Това означава, че относителните записи на една и съща стойност на ID, "11", също ще бъдат изтрити от дъщерната таблица.

>> ИЗБЕРЕТЕ * ОТ данни.поръчка;

Извличането на записите на дъщерната таблица с помощта на командата SELECT е толкова просто, колкото и преди. Просто опитайте командата по-долу и ще получите резултатите.

При получаване на резултатите можете да видите, че записът на „CustID“ със стойност „1“ е изтрит изцяло. Това е така, защото колоната „OrderID“ има стойност „11“ в първия си ред, което води до изтриването на този ред.

>> ИЗБЕРЕТЕ * ОТ данни.клиент;

Когато се опитате да пуснете родителската таблица с помощта на командата DROP, MySQL ще ви попречи да го направите. Това е така, защото родителската таблица е активирала DELETE CASCADE върху нея. Така че, за да изпуснете таблицата, първо трябва да премахнете ИЗТРИВАНЕТО КАСКАД от нея.

Заключение:

Приключихме с обяснението на DELETE CASCADE в MySQL. За да стане по-ясно, опитайте още примери в края си.

Полезни инструменти за геймърите на Linux
Ако искате да играете игри на Linux, има вероятност да сте използвали приложения и помощни програми като Wine, Lutris и OBS Studio, за да подобрите иг...
HD Remastered Games за Linux, които никога преди не са имали издание на Linux
Много разработчици и издатели на игри излизат с HD ремастер на стари игри, за да удължат живота на франчайза, моля феновете, които искат съвместимост ...
Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...