我有以下两个表格和一个触发器,当一个记录插入User表格并在StudentID中带有一个非空值时,这个触发器应该将一条记录插入到Student表格中。 MySQL在触发器上报告没有语法错误,并且按照预期插入到用户表中,但不触发插入到Student表中。
我曾尝试使用BEFORE和AFTER INSERT之后无效。我正在使用phpMyAdmin版本3.5.2.2。任何帮助将不胜感激。插入触发器不工作后的MySQL
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 ;
你不能使用AFTER INSERT后,您必须使用BEFORE INSERT – Winston 2013-02-22 23:22:06
@Win斯通我尝试过之前插入没有成功。与AFTER INSERT相比,在使用BEFORE INSERT时是否需要对触发器进行任何其他语法更改? – Aprish 2013-02-22 23:35:39