所以我有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_product 中新插入的行不同的信息,请告诉我我是否解释过自己,如果没有,我会尽力说得更清楚。
最佳答案
此查询将为您提供所需的结果,无需使用触发器:
SELECT
t1.id_stop,
t1.id_prod,
t1.`name`,
t2.date
FROM stop_production
LEFT JOIN production
ON (t1.id_prod = t2.id);
如果你想用它制作一个“表格”,你可以创建一个 view .
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;
关于mysql触发一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55271524/