MySQL Nach Insert-Trigger Funktioniert Nicht

Habe ich die folgenden zwei Tabellen und einem trigger, der sollte einen Datensatz einfügen, in der Schüler-Tabelle, wenn ein Datensatz eingefügt wird, in der User-Tabelle mit einem nicht-null-Wert in StudentID. MySQL meldet keinen Fehler in der syntax auf den Auslöser und ein insert in die User-Tabelle funktioniert wie erwartet, aber nicht die trigger eine insert-in der Student-Tabelle.

Ich habe versucht, mit Hilfe von VOR und NACH dem EINFÜGEN keine Wirkung. Ich bin mit phpMyAdmin version 3.5.2.2. Jegliche Hilfe würde sehr geschätzt werden.

DROP TABLE IF EXISTS `User` ;

CREATE  TABLE IF NOT EXISTS `User` (
  `UserID` INT NOT NULL AUTO_INCREMENT ,
  `FirstName` VARCHAR(45) NOT NULL ,
  `LastName` VARCHAR(45) NOT NULL ,
  `eMail` VARCHAR(60) NOT NULL ,
  `StudentID` INT NULL ,
  KEY ix_User_StudentID (StudentID),
  PRIMARY KEY (`UserID`)
)
ENGINE = InnoDB;  

DROP TABLE IF EXISTS `Student` ;

CREATE  TABLE IF NOT EXISTS `Student` (
  `StudentID` INT NOT NULL ,
  `UserID` INT NOT NULL ,
  PRIMARY KEY (`StudentID`) ,
  CONSTRAINT `fk_Student_User1`
    FOREIGN KEY (`StudentID` )
    REFERENCES `User` (`StudentID` )
    ON DELETE CASCADE
    ON UPDATE CASCADE, 
  CONSTRAINT `fk_Student_User2`
    FOREIGN KEY (`UserID`)
    REFERENCES `User` (`UserID`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
)
ENGINE = InnoDB;

DROP TRIGGER IF EXISTS after_insert_user;

DELIMITER //
CREATE TRIGGER after_insert_user 
AFTER INSERT ON `User`
FOR EACH ROW BEGIN
    IF (NEW.StudentID <> NULL) THEN
        INSERT INTO Student VALUES (NEW.StudentID, NEW.UserID); 
    END IF;
END;
//

DELIMITER ;
  • Sie können nicht verwenden Sie NACH dem EINFÜGEN müssen Sie VOR dem EINFÜGEN
  • Ich habe versucht, VOR dem EINFÜGEN ohne Erfolg. Brauche ich eine andere syntax-änderungen, um die ausgelöst werden, wenn VOR der Verwendung LEGEN Sie im Vergleich mit den NACH LEGEN??
InformationsquelleAutor Aprish | 2013-02-22
Schreibe einen Kommentar