MySQL löscht Fremdschlüssel

Rashmi Patidar 15 Februar 2024
MySQL löscht Fremdschlüssel

Der Fremdschlüssel ist der Schlüssel, der zwei oder mehr Tabellen miteinander verbindet und eine sinnvolle Verbindung zwischen ihnen herstellt.

Dieser Schlüssel bezieht sich auf den Primärschlüssel in der untergeordneten Tabelle und fungiert als Fremdschlüssel in der übergeordneten Tabelle. Sie wird oft als Referenzschlüsseleinschränkung bezeichnet.

Fremdschlüssel in MySQL löschen

Die gesammelte Tatsache über den Fremdschlüssel ist, dass es nicht mehr als einen Eintrag in der Tabelle geben kann, da er als Primärschlüssel fungiert, und der Datensatz bezüglich des Primärschlüssels eindeutig ist.

Der Fremdschlüssel ist eine Einschränkung, die den Benutzer daran hindert, die verknüpften Datensätze zwischen Tabellen direkt zu löschen, was dazu beiträgt, die Benutzeraktion zu verhindern und zur Datensicherheit führt.

Die Tabelle, in der sich der Fremdschlüssel befindet, wird als Kind-Tabelle bezeichnet, und die Tabelle, aus der der Schlüssel stammt, wird als Eltern-Tabelle bezeichnet. Das Konzept der Verknüpfung von Tabellen kommt nur in den relationalen Datenbankverwaltungssystemen vor.

Die Vorteile von Fremdschlüsseleinschränkungen in MySQL sind unten aufgeführt.

  1. Die Einschränkung erzwingt die referenzielle Integrität und damit die Konsistenz über die Tabellen hinweg.
  2. Die Verwendung von Einschränkungen wie ON DELETE CASCADE und ON UPDATE CONSTRAINTS hilft dabei, das konsistente Verhalten von Tabellen in der gesamten Datenbank aufrechtzuerhalten.
  3. Es erhöht schließlich die Leistung, da das Beibehalten von Beschränkungen für miteinander verbundene Tabellen den Overhead des Erinnerns an die Tabellen verringert und verwendet wird, um die verknüpften Tabellen zu erkennen.
  4. Es erhöht die Leistung, indem es bessere Verknüpfungen durchführt und Ergebnisse schneller abruft, da die Tabellen bereits verknüpft sind.
  5. Wenn ein Datensatz in der übergeordneten Tabelle vor dem Fremdschlüssel gelöscht wird, schlägt die Abfrage fehl und lässt das Löschen der Datensätze nicht zu. Es zeigt die Verknüpfung zwischen Tabellen und fordert Sie auf, zuerst die Datensätze aus der untergeordneten Tabelle anstelle der übergeordneten Tabelle zu löschen.
Unten ist der Screenshot für dasselbe.

Löschen Sie einen Datensatz von einem übergeordneten Element, wenn eine Verknüpfung in einer untergeordneten Tabelle vorhanden ist

Um einen Fremdschlüssel zu löschen, sollte man zuerst Tabellen erstellen und Fremdschlüssel in den Tabellen generieren. Nachfolgend finden Sie den Befehl zum Erstellen der Fremdschlüsseleinschränkung in den definierten Tabellen.

create table student(id varchar(255), name varchar(255), dob date, deptId varchar(255), primary key(id));
create table department(dept_id varchar(255), id varchar(255), dept_name varchar(255), constraint fk_id foreign key(id) references student(id));

Zunächst erstellt die obige Abfrage zwei Tabellen: student und department. Die Tabelle hat die Form Eltern-Kind-Beziehung, wobei das Attribut id in der Tabelle student als Fremdschlüssel id in der Tabelle department fungiert.

Screenshots anbei:

Schüler-Eltern-Tabelle mit Primärschlüssel erstellen

Untergeordnete Tabelle Department mit Fremdschlüssel erstellen

Wenn Datensätze in die Tabelle eingefügt werden und versucht wird, den eingefügten Datensatz mit einer delete-Anweisung zu manipulieren, wird der oben gezeigte Fehler angezeigt. Um das Füllproblem zu beheben, löschen Sie die Fremdschlüsseleinschränkung und führen Sie die Löschaktion aus.

Die Syntax zum Löschen der oben erstellten Einschränkung in MySQL lautet nun:

Alter table table_name drop constraint constraint_name;

Der obige Befehl verwendet den Befehl alter, um das Tabellenschema zu ändern, und das Schlüsselwort drop, um die auf das Schema angewendete Einschränkung zu löschen. Alter table ist eine Datendefinitionssprache, die auch als DDL-Befehl bekannt ist, und hilft beim Erstellen von Datenbank- und Tabellenschemata.

Alter table department drop constraint fk_id;

Der Screenshot der delete-Anweisung, wenn die Fremdschlüsseleinschränkung entfernt wird, ist unten.

Fremdschlüssel löschen und Datensätze aus übergeordneter Tabelle löschen

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

Verwandter Artikel - MySQL Key