Maison > base de données > tutoriel mysql > le corps du texte

Résumé de l'établissement des tables parents de test, des tables enfants et des cas de test dans Mysq

php是最好的语言
Libérer: 2018-08-01 15:06:23
original
2445 Les gens l'ont consulté

Créer une table de test

Afficher les informations sur la version

select version();
5.7.22
Copier après la connexion

Créer une table parent

drop table if exists Models;
CREATE TABLE Models
  (
    ModelID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
   Name VARCHAR(40) NOT NULL,
    PRIMARY KEY (ModelID)
);
Copier après la connexion

Créer une table enfant

drop table if exists Orders;
CREATE TABLE Orders
  (
    ID          SMALLINT UNSIGNED NOT NULL PRIMARY KEY,
   ModelID     SMALLINT UNSIGNED NOT NULL,
     Description VARCHAR(40),
    FOREIGN KEY (ModelID) REFERENCES Models (ModelID)
      ON DELETE cascade
  );
Copier après la connexion

Test

Cas de test - il n'y a pas de données correspondantes dans la table parent, insérez d'abord la table enfant

insert into Orders(Id,ModelID,Description) values (1,1,'a');
Copier après la connexion

Résultat : échec de l'exécution
Exception : [2018-07-31 11:08 :01] 23000 Impossible d'ajouter ou de mettre à jour une ligne enfant : une contrainte de clé étrangère échoue (bov.Orders, CONSTRAINT Orders_ibfk_1 FOREIGN KEY (ModelID) REFERENCES Models (ModelID) ON DELETE CASCADE)
Raison : échec de la vérification des contraintes de clé étrangère lors de la suppression en cascade

Scénario de test : insérer d'abord les données de la table principale, puis insérer les données de la sous-table

insert into Models(ModelID,Name) values (1,'a');
insert into Orders(Id,ModelID,Description) values (1,1,'a');
Copier après la connexion

Résultat : exécution réussie

select * from Models;
1    a

select * from Orders;
1    1    a
Copier après la connexion

Cas de test - Les tables parent et enfant contiennent des données, supprimez les données de la table enfant

delete from Orders where id = 1;
Copier après la connexion

Résultat : Exécution réussie

select * from Models;
1    a
select * from Orders;
为空
Copier après la connexion

Cas de test - Les deux Les tables parent et enfant ont des données, supprimez la bibliothèque de tables parent

delete from Models where ModelID = 1;
Copier après la connexion

Résultat : Exécution réussie

select * from Models;
为空
select * from Orders;
为空
Copier après la connexion

Scénario de test - les tables parent et enfant ont des données, mettez à jour les clés étrangères du table enfant

update Orders set ModelID = 3 where ID =1;
Copier après la connexion

Résultat : Échec de l'exécution
Exception : [2018-07-31 12:33:02] 23000 Impossible d'ajouter ou de mettre à jour une ligne enfant : une contrainte de clé étrangère échoue (bov .Orders, CONTRAINTE Orders_ibfk_1 CLÉ ÉTRANGÈRE (ModelID) RÉFÉRENCES Models (ModelID) SUR LA CASCADE DE SUPPRESSION)
Cause : échec de la vérification de la contrainte de clé étrangère lors de la suppression en cascade

Test cas - les tables parent et enfant contiennent des données, mettez à jour la clé primaire de la table parent

update Models set ModelID = 2 where ModelID =1;
Copier après la connexion

Résultat : échec de l'exécution
Exception : [2018-07-31 12:34:24] 23000 Impossible supprimer ou mettre à jour une ligne parent : une contrainte de clé étrangère échoue (bov.Orders, CONSTRAINT Orders_ibfk_1 FOREIGN KEY (ModelID) REFERENCES Models (ModelID) ON DELETE CASCADE)
Cause : Échec de la vérification des contraintes de clé étrangère lors de la suppression en cascade

Cas de test - table parent-enfant Les deux ont des données, mettez à jour la clé non étrangère de la table enfant

update Orders set Description = 'b' where ID =1;
Copier après la connexion

Résultat : exécuté avec succès

select * from Orders;
1    1    b
Copier après la connexion

Scénario de test : les tables parent et enfant contiennent des données, mettez à jour la clé non primaire de la table parent

update Models set Name = 'c' where ModelID =1;
Copier après la connexion

Résultat : exécution réussie

select * from Models;
1    c
Copier après la connexion

Connexe articles :

Création d'index de base de données MySQL et tests de performances

Test de résistance mysql haute performance (résumé depuis longtemps)

Vidéos associées :

Tableau linéaire d'aventure de structure de données

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal