Heim  >  Artikel  >  Datenbank  >  Verstehen Sie die Rolle von Fremdschlüsseln in MySQL

Verstehen Sie die Rolle von Fremdschlüsseln in MySQL

coldplay.xixi
coldplay.xixinach vorne
2020-08-31 16:59:362534Durchsuche

Verstehen Sie die Rolle von Fremdschlüsseln in MySQL

【Verwandte Lernempfehlungen: MySQL-Lernen

Die Rolle von MySQL-Fremdschlüsseln:

Aufrechterhaltung der Datenkonsistenz und -integrität. Der Hauptzweck besteht darin, die in der gespeicherten Daten zu kontrollieren Fremdschlüsseltabellendaten. Um zwei Tabellen zu verknüpfen, können Fremdschlüssel nur auf die Werte der Spalten in der Tabelle verweisen! „Lassen Sie uns zwei Tabellen erstellen.“ Fremdschlüssel

und fügen Sie Daten jeweils in die beiden Tabellen ein. Wir nennen stu_id und course_id die Fremdschlüssel der Tabelle example2 und example2 ist die Worttabelle. Die beiden Tabellen müssen vor den entsprechenden Daten gelöscht werden Die übergeordnete Tabelle kann gelöscht werden.

Lassen Sie uns nun ein Datenelement in Beispiel 1 löschen `.`example3`, CONSTRAINT `f_ck ` FOREIGN KEY (`stu_id`, `course_id`) REFERENCES `example2` (`stu_id`, `course_id`))

Da die Daten in Beispiel2 mit den Daten in Beispiel1 verknüpft sind, es kann nicht gelöscht werden und erreicht die Fremdschlüsselfunktion;

Dann löschen wir zuerst die Daten in der Tabelle Beispiel2 und dann die Daten in der Tabelle Beispiel1

Löschen aus Beispiel2, wobei stu_id=2;

Löschen aus Beispiel1, wobei stu_id=2;

Dies ist erfolgreich;

Einschränkungen für Ereignisauslöser:

Beim Löschen und beim Aktualisieren können Sie die Parameter kaskadieren (Fremdschlüsseländerungen folgen), einschränken (Fremdschlüsseländerungen einschränken). table) ), set Null (Nullwert festlegen), set Default (Standardwert festlegen), [default] no action
Werfen wir einen Blick darauf, wozu die Einschränkungen bei der Ereignisauslösung dienen. . .

Wir löschen zuerst den Fremdschlüssel und stellen dann den Fremdschlüssel mit ereignisauslösenden Einschränkungen wieder her

Alter Table Beispiel2 Drop Foreign Key f_ck Alter Table Beispiel2 Add CONSTRAINT „f_ck“ FOREIGN KEY („stu_id“, „course_id“) REFERENZEN „example1“ (`stu_id`, `course_id`) ON DELETE CASCADE ON UPDATE CASCADE;

Lass uns zuerst die Daten überprüfen

mysql> select * from example1;select * from example2;

CREATE TABLE `example1` (
  `stu_id` int(11) NOT NULL DEFAULT '0',
  `course_id` int(11) NOT NULL DEFAULT '0',
  `grade` float DEFAULT NULL,
  PRIMARY KEY (`stu_id`,`course_id`)
);
CREATE TABLE `example2` (
  `id` int(11) NOT NULL,
  `stu_id` int(11) DEFAULT NULL,
  `course_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `f_ck` (`stu_id`,`course_id`),
  CONSTRAINT `f_ck` FOREIGN KEY (`stu_id`, `course_id`) REFERENCES `example1` (`stu_id`, `course_id`)
);
insert into example1 (stu_id,course_id,grade)values(1,1,98.5),(2,2,89);
insert into example2 (id,stu_id,course_id)values(1,1,1),(2,2,2);

Zu diesem Zeitpunkt ist die Summe von stu_id in Beispiel 1 und Beispiel 2, Kurs-ID ist jeweils 1 ;select * from example1;select * from example2;

delete from example1 where stu_id=2;

Ist Ihnen aufgefallen, dass die stu_id und course_id in example1 und example2 zu 3 geworden sind?

Wir werden die Daten in der Tabelle example1 löschen

delete from example1 where stu_id= 3;

Sie werden feststellen, dass die Daten in Beispiel2 gelöscht werden können.

Tatsächlich ist dies die Rolle von Fremdschlüsseln, um die Datenkonsistenz und -integrität aufrechtzuerhalten gemeinsam geändert wird durch den Ereignisauslöser bestimmt;

Verwandte Lernempfehlungen:

Programmiervideo

Das obige ist der detaillierte Inhalt vonVerstehen Sie die Rolle von Fremdschlüsseln in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:oschina.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen