【问题标题】:AFTER INSERT trigger on same table同一张表上的 AFTER INSERT 触发器
【发布时间】:2015-04-22 21:11:46
【问题描述】:

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

【问题讨论】:

  • 你会为end_time 输入什么?
  • 我会输入 date_add 函数。我稍微编辑了一下。

标签: mysql triggers


【解决方案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 函数中使用它们。

【讨论】:

    【解决方案2】:

    如果您使用正确的数据类型 (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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多