我有以下兩個表格和一個觸發器,當一個記錄插入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