Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mysql InnoDB Insert Problem mit Fremdschlüssel

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] mysql InnoDB Insert Problem mit Fremdschlüssel

    Hallo zusammen,

    mein Problem ist sicher ziehmlich trivial, aber für mich irgendwie nicht erkennbar

    ich habe folgende Tabellenstruktur:

    Code:
    CREATE TABLE `DemandUebersicht` (
      `DueID` int(10) unsigned NOT NULL auto_increment,
      `DNR` int(10) unsigned NOT NULL default '1',
      `Eingangsdatum` int(10) unsigned NOT NULL default '1',
      `X-Nr` int(10) unsigned NOT NULL default '1',
      `Y-Nr` int(10) unsigned NOT NULL default '0',
      PRIMARY KEY  (`DueID`)
    ) ENGINE=InnoDB ;

    Code:
    CREATE TABLE `Benutzer` (
      `BID` int(10) unsigned NOT NULL auto_increment,
      `DemandUebersicht_DueID` int(10) unsigned NOT NULL,
      `EMail` varchar(75) NOT NULL,
      `Vorname` varchar(25) NOT NULL,
      `Name` varchar(25) NOT NULL,
      `Kennwort` varchar(128) NOT NULL,
      `Rolle` smallint(5) unsigned default NULL,
      `Sortierung` enum('ASC','DESC') default 'ASC',
      `Spalte` smallint(5) unsigned default '0',
      PRIMARY KEY  (`BID`),
      UNIQUE KEY `EMail` (`EMail`),
      KEY `DemandUebersicht_DueID` (`DemandUebersicht_DueID`)
    ) ENGINE=InnoDB;
    Code:
    ALTER TABLE `Benutzer`
      ADD CONSTRAINT `Benutzer_ibfk_1` FOREIGN KEY (`DemandUebersicht_DueID`) REFERENCES `Benutzer` (`DemandUebersicht_DueID`) ON DELETE CASCADE;
    Dabei ist DemandUebersicht_DueID in der Benutzer-Tabelle der Fremdschlüsselt zum PrimaryKey zur DemandUebersichts-Tabelle.

    Das Problem ist, das wenn ich folgenden Insert benutzten möchte:
    Code:
    INSERT INTO DemandUebersicht () VALUES ();
    
    SELECT @last := LAST_INSERT_ID();
    
    INSERT INTO Benutzer (EMail,DemandUebersicht_DueID,Rolle,Vorname,Name,Kennwort,Sortierung) VALUES('hans.meier@webseite.de', @last ,'1','Hans','Maier','b913d5bbb8e461c2c5961cbe0edcdadfd29f068225ceb37da6defcf89849368f8c6c2eb6a4c4ac75775d032a0ecfdfe8550573062b653fe92fc7b8fb3b7be8d','asc')
    erhalte ich folgende Fehlermeldung:
    #1452 - Cannot add or update a child row: a foreign key constraint fails (`DTDB/Benutzer`, CONSTRAINT `Benutzer_ibfk_1` FOREIGN KEY (`DemandUebersicht_DueID`) REFERENCES `Benutzer` (`DemandUebersicht_DueID`) ON DELETE CASCADE)
    Ich vermute das ich ein grundsätzliches Verständnis-Problem habe, denn nach meinem Verständnis müsste das so funktionieren.


    Vielen dank schonmal für eure Hilfe

    Viele Grüße, itachy


  • #2
    Die Fehlermeldung ist ganz normal, der Wert für `DTDB/Benutzer`.`DemandUebersicht_DueID` existiert eben in `Benutzer`.`DemandUebersicht_DueID` nicht.
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      Hi itachy,

      dein foreign key ist falsch gesetzt. Damit klappt es:

      Code:
      alter table Benutzer add constraint Benutzer_ibfk_1
        foreign key (DemandUebersicht_DueID)
        references DemandUebersicht (DueID) on delete cascade ;
      Du hattest dich 2mal auf die gleiche Tabelle bezogen.

      Gruß
      Andreas

      Kommentar


      • #4
        Hallo,

        vielen Dank für die schnellen Antworten.
        Hat tatsächlich daran gelegen das ich mich auf meine eigene Tabelle bezogen haben. Jetzt funktioniert es wunderbar.

        Vielen Dank nochmal

        Kommentar

        Lädt...
        X