【发布时间】:2019-03-19 10:15:21
【问题描述】:
MySQL BEFORE INSERT 触发器
我有一个bookings 表。我有 3 列称为
facility_id, booking_date, time_slot
我还有另一个名为facility 的表,其中有一列名为facility_id。
它们由WHERE bookings.faciliy_id = facility.facility_id链接
我正在尝试计算预订表中的 3 列重复时的发生情况,即:
1, 2017-02-02,08:00
1, 2017-02-02,08:00
我希望这是 2。
然后我试图检查这个结果,看看它是否 >= 到存储在设施表中的设施容量。如果为真则抛出错误消息。
DELIMITER
//
CREATE TRIGGER facility_full BEFORE INSERT ON bookings
FOR EACH ROW
BEGIN
SELECT DISTINCT facility_id, booking_date, timeslot, COUNT(*) FROM bookings
SET COUNT = Answer
IF (Answer) >= facility_capacity
THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Facility Full';
WHERE bookings.facility_id = facility.facility_id;
END IF;
END
//
DELIMITER ;
【问题讨论】:
标签: mysql triggers count where sql-insert