Heim > Datenbank > MySQL-Tutorial > Hauptteil

Zusammenfassung der Einrichtung von übergeordneten Testtabellen, untergeordneten Tabellen und Testfällen in Mysq

php是最好的语言
Freigeben: 2018-08-01 15:06:23
Original
2445 Leute haben es durchsucht

Testtabelle erstellen

Versionsinformationen anzeigen

select version();
5.7.22
Nach dem Login kopieren

Übergeordnete Tabelle erstellen

drop table if exists Models;
CREATE TABLE Models
  (
    ModelID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
   Name VARCHAR(40) NOT NULL,
    PRIMARY KEY (ModelID)
);
Nach dem Login kopieren

Untergeordnete Tabelle erstellen

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
  );
Nach dem Login kopieren

Test

Test Anwendungsfall – Es gibt keine entsprechenden Daten in der übergeordneten Tabelle, fügen Sie zuerst die untergeordnete Tabelle ein

insert into Orders(Id,ModelID,Description) values (1,1,'a');
Nach dem Login kopieren

Ergebnis: Ausführung fehlgeschlagen
Ausnahme: [2018-07-31 11:08:01] 23000 Kann nicht hinzugefügt werden oder Untergeordnete Zeile aktualisieren: Eine Fremdschlüsseleinschränkung schlägt fehl (bov.Orders, CONSTRAINT Orders_ibfk_1 FOREIGN KEY (ModelID) REFERENCES Models (ModelID) ON DELETE CASCADE)
Grund: Der Fremdschlüssel Schlüssel bei Löschkaskade kann nicht übergeben werden. Einschränkungsprüfung

Testfall – Zuerst Haupttabellendaten einfügen, dann untergeordnete Tabellendaten einfügen

insert into Models(ModelID,Name) values (1,'a');
insert into Orders(Id,ModelID,Description) values (1,1,'a');
Nach dem Login kopieren

Ergebnis: Erfolgreiche Ausführung

select * from Models;
1    a

select * from Orders;
1    1    a
Nach dem Login kopieren

Testfall- Sowohl die übergeordnete als auch die untergeordnete Tabelle haben Daten, löschen Sie die Daten der untergeordneten Tabelle

delete from Orders where id = 1;
Nach dem Login kopieren

Ergebnis: Erfolgreiche Ausführung

select * from Models;
1    a
select * from Orders;
为空
Nach dem Login kopieren

Testfall – sowohl die übergeordnete als auch die untergeordnete Tabelle haben Daten, löschen Sie die Bibliothek der übergeordneten Tabelle

delete from Models where ModelID = 1;
Nach dem Login kopieren

Ergebnis: Erfolgreiche Ausführung

select * from Models;
为空
select * from Orders;
为空
Nach dem Login kopieren

Testfall – Sowohl übergeordnete als auch untergeordnete Tabellen haben Daten, aktualisieren Sie den Fremdschlüssel der untergeordneten Tabelle

update Orders set ModelID = 3 where ID =1;
Nach dem Login kopieren

Ergebnis: Ausführung fehlgeschlagen
Ausnahme: [2018 -07-31 12:33:02] 23000 Eine untergeordnete Zeile kann nicht hinzugefügt oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl (bov.Orders, CONSTRAINT Orders_ibfk_1 FOREIGN KEY (ModelID) REFERENCES Models (ModelID) ON DELETE CASCADE)
Grund: Fehler beim Löschen der Fremdschlüssel-Einschränkungsprüfung von Cascade

Testfall – sowohl übergeordnete als auch untergeordnete Tabellen haben Daten, aktualisieren Sie den Primärschlüssel der übergeordneten Tabelle

update Models set ModelID = 2 where ModelID =1;
Nach dem Login kopieren

Ergebnis: Ausführung fehlgeschlagen
Ausnahme: [2018-07-31 12:34 :24] 23000 Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl (bov.Orders, CONSTRAINT Orders_ibfk_1 FOREIGN KEY (ModelID) REFERENCES Models (ModelID) ON DELETE CASCADE)
Grund: Prüfung der Fremdschlüsseleinschränkung bei Löschkaskade fehlgeschlagen

Testfall – sowohl übergeordnete als auch untergeordnete Tabellen enthalten Daten , aktualisiere den Nicht-Fremdschlüssel der untergeordneten Tabelle

update Orders set Description = 'b' where ID =1;
Nach dem Login kopieren

Ergebnis: Erfolgreiche Ausführung

select * from Orders;
1    1    b
Nach dem Login kopieren

Testfall – Sowohl die übergeordnete als auch die untergeordnete Tabelle haben Daten, aktualisiere den nicht-primären Schlüssel der übergeordneten Tabelle

update Models set Name = 'c' where ModelID =1;
Nach dem Login kopieren

Ergebnis: Erfolgreiche Ausführung

select * from Models;
1    c
Nach dem Login kopieren

Verwandte Artikel:

Einrichtung und Leistungstest des MySQL-Datenbankindex

MySQL-Hochleistungsstresstest (lange Zusammenfassung)

Verwandte Videos:

Data Structure Adventure: Linear Table

Das obige ist der detaillierte Inhalt vonZusammenfassung der Einrichtung von übergeordneten Testtabellen, untergeordneten Tabellen und Testfällen in Mysq. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage