Supprimer la cascade MySQL

Rashmi Patidar 28 mars 2022
Supprimer la cascade MySQL

Dans le langage MySQL, la contrainte fait référence à l’ensemble de règles qui sont appliquées sur la table pour éviter certaines anomalies.

Ces anomalies conduisent à des enregistrements erronés dans la table. Les contraintes peuvent être de différents types en fonction du comportement de la faille.

Il s’agit de l’intégrité référentielle, de la contrainte d’entité et de la contrainte sémantique. Ceux-ci ont une signification et une utilisation en fonction du type de faute et de la manière dont un comportement incohérent peut être évité.

Comprenons brièvement le type de contraintes qui sont présentes.

  1. Entity Constraint est une contrainte qui s’applique sur les entités et les attributs présents dans la table.

    Il maintient la cohérence entre les valeurs présentées dans une colonne d’un tableau. Elle est souvent connue sous le nom de validation de premier niveau, où l’intégrité de la colonne est maintenue.

    Exemple:

    create table student (stu_id int primary key, stu_name varchar2(50), stu_dept varchar2(15));
    Insert into student values(111, 'ABC', 'Chemical');
    

    La primary key est la contrainte d’intégrité de l’entité qui signifie en interne que la colonne stu_id est une valeur unique et non nulle. Aucune duplicité n’est autorisée dans la colonne stu_id, et une valeur non nulle n’est pas autorisée.

  2. La contrainte sémantique est appliquée sur une colonne pour afficher des valeurs de type de données similaires présentes dans la table. Il est généralement appliqué sur une colonne pour rendre les valeurs cohérentes et rester d’un type particulier.

    Exemple:

    Stu_name varchar2(50);
    

    Dans l’exemple ci-dessus, varchar2 est le type de données d’une capacité de 50 octets contenant le nom de l’étudiant.

    La colonne ne conserve que les valeurs de type caractère et aucune valeur double ou entière n’est autorisée. Il s’agit donc d’un type de contrainte sémantique.

  1. L’intégrité référentielle est la contrainte qui s’applique aux autres tables pour appliquer des restrictions sur les données. La contrainte la plus utilisée est la contrainte de clé étrangère.

    S’il y a une modification dans la table parent, la table enfant doit rester cohérente avec la table parent. S’il s’agit de supprimer l’enregistrement, la référence dans l’enregistrement enfant ne doit pas rester en suspens et constitue une contrainte d’intégrité référentielle.

    Exemple:

    create table report_card (stu_roll_number int, stu_marks int, stu_course varchar2(30) references student);
    

    Dans l’exemple ci-dessus, un bulletin indique le département ou le cours de l’étudiant à partir de la table parent étudiant. Si la contrainte d’intégrité référentielle est appliquée, les manipulations dans une table affecteront le travail dans les tables enfants.

Sous la contrainte d’intégrité référentielle, on delete cascade est une contrainte d’intégrité référentielle qui supprime automatiquement les enregistrements enfants si l’enregistrement parent est supprimé. C’est en réponse à l’action de référence prise à partir de la clé étrangère.

Exemple:

CREATE TABLE Student (stu_id int(10) NOT NULL, name varchar(10) NOT NULL, birthdate date NOT NULL, PRIMARY KEY (stu_id));

La requête ci-dessus crée une table étudiant avec des attributs ou des colonnes comme identifiant d’étudiant avec le type int et la clé primaire comme contrainte d’entité sur la colonne. Les autres attributs de valeurs incluent le nom et l’anniversaire avec varchar et date comme types de données.

CREATE TABLE Department (dept_id int(20) PRIMARY KEY NOT NULL,stu_id int(10) NOT NULL, dept_name varchar(20) NOT NULL, FOREIGN KEY (stu_id) REFERENCES Student (stu_id) ON DELETE CASCADE);

Ici, la requête ci-dessus, une table de département est formée avec des attributs tels que l’identifiant, le nom du département et l’identifiant de l’étudiant. De plus, l’identifiant de l’étudiant servira de référence ou de clé étrangère à partir de la table parent.

Ici, la contrainte on delete cascade indique que lorsqu’une suppression dans l’identifiant de l’étudiant se produit, son entrée dans la table du département sera également supprimée. Il n’y aura donc aucune entrée correspondant à l’étudiant dans un département après suppression.

Insérons les enregistrements dans les tables et voyons comment la manipulation fonctionne ici.

Tout d’abord, insérez les enregistrements dans la table Student.

INSERT INTO Student (stu_id, name, birthdate) VALUES  
(101, 'John', '1995-11-12'),  
(102, 'Jian', '1983-07-19'),  
(103, 'Jackey', '1965-10-23');

La requête ci-dessus va insérer trois enregistrements dans la table Student.

Insertion des enregistrements dans la table Department.

INSERT INTO Department (dept_id, stu_id, dept_name) VALUES   
(301, 101, 'Physics'),  
(302, 101, 'Science'),  
(303, 102,  'Maths');

La requête ci-dessus insérera trois départements pour les identifiants étudiants respectifs dans le département de la table.

Supprimons maintenant un enregistrement dans la table parent.

DELETE FROM Student WHERE stu_id = 102; 

Le résultat final supprimera le troisième enregistrement de la table department au fur et à mesure que la référence de sa table parente sera supprimée, ce qui rendra le troisième enregistrement suspendu.

Par conséquent, il effondre le troisième enregistrement en utilisant la propriété on delete cascade. Cette propriété est une propriété de contrainte d’intégrité référentielle qui supprime les enregistrements de la table enfant lorsque la table parent est affectée.

Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Article connexe - MySQL Delete