Вы не говорите, когда создается datos_trabajadores, так что вот триггер, который проверяет и создает при необходимости.Я использовал простой подсчет, чтобы проверить, существуют ли уже id_tra_rec и fecha_rec - это триггер после вставки, так что отсчет 1 означает его первый.обратите внимание, что debug_table существует для отладки, которую вы должны удалить, когда будете довольны.
drop table if exists datos_recogida,datos_trabajadores;
create table datos_trabajadores
( id_tra int(11) auto_increment primary key,
nombre_tra varchar(100) ,
apellidos_tra varchar(100) ,
dni_tra varchar(1000) ,
telefono_tra int(10) ,
falta_tra date ,
dias_tra int(255) )
;
create table datos_recogida
( id_rec int(11) auto_increment primary key,
id_tra_rec int(11) ,
id_var_rec int(11) ,
fecha_rec date ,
cantidad_rec int(255) );
drop trigger if exists t;
delimiter $$
create trigger t after insert on datos_recogida
for each row
begin
if (select count(*) from datos_recogida where id_tra_rec = new.id_tra_rec and fecha_rec = new.fecha_rec) = 1 then
insert into debug_table(msg) values (concat('not found:',new.id_tra_rec,':',new.fecha_rec));
if not exists(select 1 from datos_trabajadores where dias_tra = new.id_tra_rec) then
insert into debug_table(msg) values ('inserting');
insert into datos_trabajadores(dias_tra,nombre_tra) values (new.id_tra_rec,1);
else
insert into debug_table(msg) values ('Updating');
update datos_trabajadores
set nombre_tra = nombre_tra + 1
where dias_tra = new.id_tra_rec;
end if;
end if;
end $$
delimiter ;
truncate table debug_table;
truncate table datos_recogida;
truncate table datos_trabajadores;
insert into datos_recogida (id_tra_rec,fecha_rec)
values
(1,'2019-01-01'),
(1,'2019-01-01'),
(1,'2019-01-02');
select * from debug_table;
select * from datos_trabajadores;
MariaDB [sandbox]> select * from debug_table;
+----+------------------------+------+
| id | msg | MSG2 |
+----+------------------------+------+
| 1 | not found:1:2019-01-01 | NULL |
| 2 | inserting | NULL |
| 3 | not found:1:2019-01-02 | NULL |
| 4 | Updating | NULL |
+----+------------------------+------+
4 rows in set (0.00 sec)
MariaDB [sandbox]> select * from datos_trabajadores;
+--------+------------+---------------+---------+--------------+-----------+----------+
| id_tra | nombre_tra | apellidos_tra | dni_tra | telefono_tra | falta_tra | dias_tra |
+--------+------------+---------------+---------+--------------+-----------+----------+
| 1 | 2 | NULL | NULL | NULL | NULL | 1 |
+--------+------------+---------------+---------+--------------+-----------+----------+
1 row in set (0.00 sec)