mysql触发器:如果重复插入另一个表

时间:2012-05-22 17:44:23

标签: mysql

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

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

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

每当我在lpr_upload中添加一个新行时,我想检查新行的lpr_tex是否已存在于表中。如果它已经存在,我想用lpr_text和new datetime - old datetime在lpr_traveltime中添加一个新行。这就是我到目前为止所做的:

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

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

1 个答案:

答案 0 :(得分: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是datetime类型。

从NEW magic table中选择插入的lpr_text的date_time值,但其date_time与插入的不同。

如果var为null意味着没有发生任何赋值并且var保留了初始缺省值NULL,那么使用var和插入的lpr_text

将行插入到另一个表中