在两个表之间加入联接的插入语句

时间:2018-09-18 08:39:11

标签: mysql triggers

我希望能够通过触发器将来自两个表的数据插入内部连接到第三个表,我的插入查询如下:

INSERT INTO reg04_rpt_animreg 
(animalid
,tagid
,tagprefix
,tagsec
,name
,color
,sex
,inadggbundle
,hh_id
,regdate) VALUES 
(NEW.animalid
,NEW.tagid
,NEW.tagprefix
,NEW.tagsec
,NEW.name
,NEW.color
,NEW.sex
,1
,NEW.farmermobile
,now()
);

但是我需要对两个表进行内部联接以获取NEW.farmermobile的值,是否可以使用insert语句在内部联接中进行操作?

2 个答案:

答案 0 :(得分:1)

您可以从SELECT查询而不是文字VALUES列表中获取要插入的值。

INSERT INTO reg04_rpt_animreg (animalid, tagid, tagprefix,tagsec,name,color,sex,inadggbundle,hh_id,regdate)
SELECT NEW.animalid, new.tagid, ,NEW.tagprefix,NEW.tagsec,NEW.name,NEW.color,NEW.sex,1,
        t1.column, now()
FROM someTable AS t1
JOIN someOtherTable AS t2 ON t1.something = t2.somethingelse

答案 1 :(得分:0)

我认为这是一种不好的做法,因为这意味着您的数据重复。 最好只是将数据插入两个表中,然后在需要将数据合并时,使用带有SELECT的{​​{1}}查询将2个表中的数据放入1个结果表中

您还可以定义一个为您执行此操作的VIEW。但是,请勿重复您的数据。这使事情变得复杂。