所以我有3个表Production,Stop_Prodcution和Triggered_table。 生产具有Stop_prodcution的一对多实现,其中生产可以具有许多Stop生产。
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中新插入的行不同,请告诉我是否解释了我的自我,否则我会尝试更加清楚。
答案 0 :(得分:0)
此查询将为您提供所需的结果,而无需使用触发器:
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;