我有以下两个表,以及一个触发器,当将一条记录插入到 User 表中时,该触发器应该在 Student 表中插入一条记录,且 StudentID 中的值为非空。MySQL 在触发器上没有报告语法错误,并且对 User 表的插入按预期工作,但不会触发对 Student 表的插入。
我尝试使用 BEFORE 和 AFTER INSERT 无效。我正在使用 phpMyAdmin 版本 3.5.2.2。任何帮助将不胜感激。
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 ;