Вставить оператор с объединением двух таблиц - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу иметь возможность вставлять данные из двух таблиц, внутренне соединенных с третьей таблицей с помощью триггера, мой запрос вставки выглядит следующим образом:

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, возможно ли сделать во внутреннем соединении оператор вставки?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы можете получить значения для вставки из запроса 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
0 голосов
/ 18 сентября 2018

Я считаю, что это плохая практика, потому что это означает дублирование ваших данных.Лучше просто вставить данные в две таблицы, а затем, когда вам нужно объединить данные, использовать запрос SELECT с INNER JOIN, чтобы получить данные из 2 таблиц в 1 таблицу результатов.

Вы также можете определить ВИД, который сделает это за вас.Однако не дублируйте ваши данные.Это усложняет ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...