mysql вызывает отношение один ко многим - PullRequest
0 голосов
/ 21 марта 2019

Итак, у меня есть 3 таблицы Production, Stop_Prodcution и triggered_table.У производства есть реализация «один ко многим» с Stop_prodcution, где у производства может быть много стоп-программ.

 production table 
-----------------------
  id_prod |   date
-----------------------
    1     |20/03/2019
    2     |18/04/2019

 Stop_Production table
  ----------------------------
 id_stop |    name    | id_prod
  ----------------------------
    1    | Any reason |    1
    2    |   Lunch    |    1
    3    |damaged prod|    2

 triggered_table
 ----------------------------
 id|id_prod|date|id_stop|name

Я создал 2 триггера:

after insert into production         
for each row         
insert into triggered_table        
(id_prod,date) values (new.id_prod, curdate()) 

и другой:

after update     
set id_stop=new.id_stop, 
name= new.name     
where id_prod= new.id_prod

проблема в том, что производственная запись может иметь 2 или более записей stop_Production, поэтому при наличии у меня триггеров она всегда обновляетта же запись, но мне нужна новая запись с той же информацией о производственной таблице и информацией, которая отличается от новой вставленной строки в stop_production. Скажите, пожалуйста, объясню ли я сам, если нет, постараюсь быть более ясным.

1 Ответ

0 голосов
/ 21 марта 2019

Этот запрос даст вам нужные результаты без использования триггера:

SELECT 
t1.id_stop,
t1.id_prod,
t1.`name`,
t2.date
FROM stop_production
LEFT JOIN production
ON (t1.id_prod = t2.id);

Если вы хотите сделать из этого «таблицу», вы можете создать представление .

CREATE VIEW triggered_table AS (
    SELECT 
    t1.id_stop,
    t1.id_prod,
    t1.`name`,
    t2.date
    FROM stop_production
    LEFT JOIN production
    ON (t1.id_prod = t2.id)
)

Затем, если вы хотите SELECT из этой "таблицы", вы можете просто:

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