MySQL的触发
问题描述:
之前,我有这两个表:MySQL的触发
CREATE TABLE `reservation` (
`id_reservation` int(11) PRIMARY KEY,
`reserved_date` date NOT NULL,
`id_event` int(11) NOT NULL,
FOREIGN KEY (`id_event`) REFERENCES `event`
)
CREATE TABLE `event` (
`id_event` int(11) PRIMARY KEY,
`begin_date` date NOT NULL,
`end_date` date NOT NULL,
)
基本上我插入reservation
具有单reserved_date
。 reservation
与event
有关,其具有begin_date
和end_date
。
我需要检查reserved_date
包含(Y < = X < = Z)在begin_date
和该特定event
的end_date
。
答
试试这个触发器 -
CREATE TRIGGER trigger1
BEFORE INSERT
ON reservation
FOR EACH ROW
BEGIN
DECLARE id_event_var INT DEFAULT NULL;
SELECT id_event INTO id_event_var FROM `event` WHERE id_event = new.id_event AND new.reserved_date >= begin_date AND new.reserved_date <= end_date;
IF id_event_var IS NULL THEN
... -- wrong date!
END IF;
END
它返回第6行 什么样的声明做我后写的“IF id_event_var为null,则”错误#1064? – Dave 2012-01-14 13:26:34
在这里写你的代码。例如,你可能会抛出一个错误,例如:'CALL unlnown_function();' – Devart 2012-01-16 08:42:55
好吧,让我们想想为这个错误提出反馈意见,例如我想打印出来:“对不起,你不能”。我该怎么做? – Dave 2012-01-18 17:18:48