我有一个包含4列的表格:
ID, start_time, time, end_time
现在,如果我想在我的表中插入行,那么应该自动填充end_time。所以我只需提供两个值(自动插入ID):start_time和time。
为此,我使用DATE_ADD函数。
date_add(start_time, interval time minute)
我想使用AFTER INSERT触发器来做到这一点,但我不知道如何创建该触发器。
提前致谢!
编辑:DATE_ADD
答案 0 :(得分:1)
您无法更新正在执行触发器的同一个表。
所以你需要使用before insert
delimiter //
create trigger table_before_insert before insert on table_name
for each row
begin
set new.end_time = date_add(/*your increment logic here */);
end;//
delimiter;
您可以使用new
访问所有值,并根据需要在date_add函数中使用它们。
答案 1 :(得分:0)
如果使用正确的数据类型(DATETIME
/ TIME
),您也可以直接在查询中执行DATE_ADD
。例如,如果您要将end_time
设置为start_time + time
,则可以在插入语句中执行此操作:
INSERT INTO `table` (`start_time`, `time`, `end_time`)
VALUES (
'2015-04-22 13:37:00',
'02:30:00',
DATE_ADD(`start_time`, INTERVAL `time` HOUR_SECOND)
);
这会立即将end_time
设置为2015-04-22 16:07:00
。