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??
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hat brauchen, um einen AFTER-trigger, aber
wird nicht geben Ihnen, was Sie wollen. Es wird immer false zurückgeben. Verwenden Sie stattdessen:
oder etwas kryptischer:
oder die eher esoterischen:
Hier ist es in Aktion: