插入后触发器相同 table
AFTER INSERT trigger on same table
我有一个包含 4 列的 table:
ID, start_time, time, end_time
现在,如果我想在我的 table 中插入行,那么 end_time 应该会自动填充。所以我只需要提供两个值(ID 自动插入):start_time 和 time.
为此,我使用 DATE_ADD 函数。
date_add(start_time, interval time minute)
我想使用 AFTER INSERT 触发器来执行此操作,但我不知道如何创建该触发器。
提前致谢!
编辑:DATE_ADD
您不能更新正在执行触发器的相同 table。
所以你需要使用 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 函数中使用它们。
如果您使用正确的数据类型 (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
。
我有一个包含 4 列的 table:
ID, start_time, time, end_time
现在,如果我想在我的 table 中插入行,那么 end_time 应该会自动填充。所以我只需要提供两个值(ID 自动插入):start_time 和 time.
为此,我使用 DATE_ADD 函数。
date_add(start_time, interval time minute)
我想使用 AFTER INSERT 触发器来执行此操作,但我不知道如何创建该触发器。
提前致谢!
编辑:DATE_ADD
您不能更新正在执行触发器的相同 table。
所以你需要使用 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 函数中使用它们。
如果您使用正确的数据类型 (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
。