同一表

时间:2015-04-22 12:44:35

标签: mysql triggers

我有一个包含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

2 个答案:

答案 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