Foreign Key löschen

KyunKyun

Neuer Benutzer
Beiträge
1
Hallöchen!

Jetzt bin ich so verzweifelt, dass ich mich doch mal in einem Forum dafür anmelde...

Und zwar wollte ich einen Foreign Key aus meiner Child-Tabelle löschen. Hat nach ewigem Hin und Her (angeblich) auch geklappt
(mit ALTER TABLE Rassen DROP FOREIGN KEY `Rassen_ibfk_1` ; .

Nun ist es meine Aufgabe von jedem Ergebnis auch einen Screenshot zu machen, daher hab ich die Tabelle mit EXPLAIN table aufgerufen, und dann seh ich, dass in der Key-Spalte aber noch "MUL" drin steht. Das ist doch die Bezeichnung für den Foreign Key...müsste das jetzt nicht eigentlich auch rausgelöscht sein, wenn der Foreign Key gelöscht ist?!

Das verwirrt mich jetzt doch Ô_o
 
Werbung:
Und zwar wollte ich einen Foreign Key aus meiner Child-Tabelle löschen. Hat nach ewigem Hin und Her (angeblich) auch geklappt
(mit ALTER TABLE Rassen DROP FOREIGN KEY `Rassen_ibfk_1` ; .

Nun ist es meine Aufgabe von jedem Ergebnis auch einen Screenshot zu machen,

Herr, werfe Hirn auf denjenigen, der solche Aufgaben stellt!

daher hab ich die Tabelle mit EXPLAIN table aufgerufen, und dann seh ich, dass in der Key-Spalte aber noch "MUL" drin steht. Das ist doch die Bezeichnung für den Foreign Key...müsste das jetzt nicht eigentlich auch rausgelöscht sein, wenn der Foreign Key gelöscht ist?!

Das verwirrt mich jetzt doch Ô_o

Ein FK besteht, in der technischen Realisierung in MyZettelkasten, aus 2 Teilen:

  • dem Constraint
  • einem Index

Nötig wäre der Index hier zwar nicht, warum das so gemacht wird ist mir nicht bekannt. Egal. Wenn Du nun den Constraint löscht, bleibt was bestehen? Richtig, MySQL ist hier senil.


Das ganze funktioniert so, wie Du es erwartest, korrekt in richtigen Datenbanken. Zum Beispiel PostgreSQL:

Code:
test=*# create table master (id int primary key);
CREATE TABLE
test=*# create table slave (m int references master);
CREATE TABLE
test=*# \d slave;
  Table "public.slave"
 Column |  Type  | Modifiers
--------+---------+-----------
 m  | integer |
Foreign-key constraints:
  "slave_m_fkey" FOREIGN KEY (m) REFERENCES master(id)

test=*# alter table slave drop constraint slave_m_fkey ;
ALTER TABLE
test=*# \d slave
  Table "public.slave"
 Column |  Type  | Modifiers
--------+---------+-----------
 m  | integer |
 
Zurück
Oben