有一个"会话" table,对于它你需要写一个触发器来检查插入数据之前的日期和时间,如果日期和时间大于或等于当前日期和时间,则可以将值插入表中,否则出错消息显示。
CREATE TABLE `seance` (
`idSeance` int(11) NOT NULL,
`Date/time` datetime NOT NULL,
`Hall_idHall` int(45) DEFAULT NULL,
`Hall_Theatre_idTheatre` int(45) DEFAULT NULL,
`Performance_idPerformance` int(45) NOT NULL,
`price` int(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TRIGGER `insert_seance` BEFORE INSERT ON `seance`
FOR EACH ROW BEGIN
IF (NEW.`Date/time` >= CURRENT_TIMESTAMP)
THEN
INSERT INTO seance
(`idSeance`, `Date/time`, `Hall_idHall`,
`Hall_Theatre_idTheatre`,`Performance_idPerformance`, `price`)
VALUES (NEW.`idSeance`,NEW.`Date/time`,NEW.`Hall_idHall`,
NEW.`Hall_Theatre_idTheatre`,NEW.`Performance_idPerformance`,NEW.`price`);
ELSE
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Error for updating values';
END IF;
END
我无法理解为什么会出错?
答案 0 :(得分:0)
这是为数不多的mysql错误消息之一(IMHO)。但是 - 您不需要INSERT语句。如果数据无效,只会出现错误。如果数据有效,您不需要在触发器中执行任何操作。该行将被插入。
genid