【发布时间】:2023-03-08 08:47:01
【问题描述】:
当向a 表插入一行时,我想在b 表中触发create new rows。
我有一张像这样的staff_leave_application 表:
id | staff | leave type | start date | end date | is half |
---+------------+---------------+------------+----------------+-----------+
1 | John Doe | Casual Leave | 17/01/2013 | 20/01/2013 | 0 |
如果在这个表中插入一行,那么它会触发并插入到另一个表leave
要插入leave表的数据:
将日期范围start date - end date 拆分为当天,例如:
17/01/2013 - 20/01/2013 will be
17/01/2013
18/01/2013
19/01/2013
20/01/2013
现在每天插入leave 表的每一行,以及staff_leave_applications 列ID, staff, leave type。
感谢Sharsh,我按照@Shaharsh shah 的回答得到了这个。
DELIMITER $$
USE `mydb`$$
CREATE
/*!50017 DEFINER = 'root'@'localhost' */
TRIGGER `tn_air_staff_leave_application` AFTER INSERT ON `staff_leave_application`
FOR EACH ROW BEGIN
SET @counter := -1;
WHILE (@counter < DATEDIFF(DATE(new.end_date), DATE(new.start_date))) DO
INSERT INTO `leave`(staff_id_staff, leave_type_id_leave_type, staff_leave_application_id_staff_leave_application, leave_date)
VALUES (new.staff_id_staff, new.leave_type_id_leave_type, new.id_staff_leave_application, DATE_ADD(new.start_date, INTERVAL @counter:=@counter + 1 DAY));
END WHILE;
END;
$$
【问题讨论】:
标签: mysql database triggers insert