Ergebnis 1 bis 7 von 7
  1. #1
    petz_e ist offline Routinier
    registriert
    14-03-2006
    Beiträge
    258

    [mySQL]: Nachträgliches Ändern eines FOREIGN KEYs

    hi,

    Ich habe mehrere MySQL tables die wie folgt erstellt wurden:

    Code:
    CREATE TABLE address (
    id INT NOT NULL AUTO_INCREMENT,
    ref INT NOT NULL,
    no INT, street CHAR(100), country CHAR(100),
    PRIMARY KEY (id),
    FOREIGN KEY (ref) REFERENCES client (id) ON DELETE CASCADE);
    Jetzt will ich ein ON UPDATE CASCADE for die Fremdschlüssel einfügen, also dass das ganze so aussieht:
    FOREIGN KEY (ref) REFERENCES client (id) ON DELETE CASCADE ON UPDATE CASCADE);

    Ich versuchte ein DROP FOREIGN KEY und ein MODIFY/ALTER TABLE. Die Datenbank liess das nicht zu. Die einzige Möglichkeit ist die gesamten Tabellen zu löschen und direkt richtig zu erstellen, was jedoch einen Haufen Arbeit bei mehr als 25 Tabellen ist... Kann man den Frendschlüssel denn nachträglich nicht mehr ändern?

    Patrick

  2. #2
    Avatar von ZeitGeist
    ZeitGeist ist offline Lounge-Member
    registriert
    26-04-2003
    Ort
    Outa Space
    Beiträge
    4.125

    AW: [mySQL]: Nachträgliches Ändern eines FOREIGN KEYs

    wie sah denn der Code genau aus? ALTER TABLE ist eigentlich der richtige Ansatz

  3. #3
    Avatar von Albu
    Albu ist offline Super Moderator
    registriert
    04-07-2001
    Beiträge
    13.501

    AW: [mySQL]: Nachträgliches Ändern eines FOREIGN KEYs

    Zitat Zitat von petz_e Beitrag anzeigen
    Die einzige Möglichkeit ist die gesamten Tabellen zu löschen und direkt richtig zu erstellen, was jedoch einen Haufen Arbeit bei mehr als 25 Tabellen ist... Kann man den Frendschlüssel denn nachträglich nicht mehr ändern?
    Ich kann jetzt nichts dazu sagen, ob das möglich sein sollte, oder wo was genaue Problem liegt, dass ALTER TABLE nicht funktioniert, aber Export - Search&Replace - Import ist ein Riesenaufwand? Verstehe ich nicht.
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  4. #4
    petz_e ist offline Routinier
    registriert
    14-03-2006
    Beiträge
    258

    AW: [mySQL]: Nachträgliches Ändern eines FOREIGN KEYs

    Zitat Zitat von ZeitGeist Beitrag anzeigen
    wie sah denn der Code genau aus? ALTER TABLE ist eigentlich der richtige Ansatz
    Also, das Löschen des Fremdschlüssels sieht so aus:
    Code:
    mysql> ALTER TABLE address
        -> DROP FOREIGN KEY ref;
    ERROR 1025 (HY000): Error on rename of '.\ibs_compta\address' to'.\ibs_compta\#sql2-c40-1' (errno: 152)
    Ich habe auch so was probiert, aber das wird nicht richtig von mySQL interpretiert:
    Code:
    mysql> ALTER TABLE address
        -> MODIFY FOREIGN KEY (ref) REFERENCES company (id) ON DELETE CASCADE ON UPDATE CASCADE;
    Patrick

  5. #5
    Avatar von ZeitGeist
    ZeitGeist ist offline Lounge-Member
    registriert
    26-04-2003
    Ort
    Outa Space
    Beiträge
    4.125

    AW: [mySQL]: Nachträgliches Ändern eines FOREIGN KEYs

    Du musst den Foreign key mit seinem Namen angeben, die Spalte auf den er sich bezieht reicht nicht.

    Code:
    Alter Table address DROP FOREIGN KEY `address_ibfk_1`
    Den Namen des Keys erhälst du mit
    Code:
    SHOW CREATE TABLE address

  6. #6
    petz_e ist offline Routinier
    registriert
    14-03-2006
    Beiträge
    258

    AW: [mySQL]: Nachträgliches Ändern eines FOREIGN KEYs

    Zitat Zitat von ZeitGeist Beitrag anzeigen
    Du musst den Foreign key mit seinem Namen angeben, die Spalte auf den er sich bezieht reicht nicht.

    Code:
    Alter Table address DROP FOREIGN KEY `address_ibfk_1`
    Den Namen des Keys erhälst du mit
    Code:
    SHOW CREATE TABLE address
    Ah, ach so, das kannte ich noch nicht. Vielen Dank für die Hilfe!

    Patrick

  7. #7
    Avatar von ZeitGeist
    ZeitGeist ist offline Lounge-Member
    registriert
    26-04-2003
    Ort
    Outa Space
    Beiträge
    4.125

    AW: [mySQL]: Nachträgliches Ändern eines FOREIGN KEYs

    gerne

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •