0

这是我第一次使用 mysql,我正在学习如何使用触发器。

我有两个表:lpr_upload 和 lpr_traveltime。我的 lpr_upload 表看起来像这样

+----------+---------+--------+-----------+
| date_time | site_id | lane_id| lpr_text  |                  
+----------+---------+--------+-----------+

每当我在 lpr_upload 中添加新行时,我想检查新行的 lpr_tex 是否已经存在于表中。如果它已经存在,我想用 lpr_text 和新的日期时间 - 旧的日期时间在 lpr_traveltime 中添加一个新行。这是我到目前为止所拥有的:

在重复键更新时插入 lpr_opt_travel_times(travel_time, lpr_text) 值(选择 TIMEDIFF (new.date_time, ...) , lpr_text) ...

我不知道如何完成这个。另外,我如何从表中已经存在的行中获取 date_time ?

4

1 回答 1

1

尝试这个:

declare ldt_date_time datetime;
select date_time into ldt_date_time from tbl where tbl.lpr_text = NEW.lpr_text and date_time <> NEW.date_time;
if ldt_date_time is not null then
    insert into lpr_opt_travel_times(travel_time, lpr_text) values (ldt_date_time, NEW.lpr_text);
end if;

声明一个日期时间数据类型的 var,因为我假设 date_time 列是日期时间类型。

从 NEW 魔术表中选择插入的 lpr_text 的 date_time 值,但其 date_time 与插入的不同。

如果 var 为 null 表示未发生分配,并且 var 保留初始默认值 NULL,则使用 var 和插入的 lpr_text 在其他表中插入行

于 2012-05-22T18:14:01.290 回答