web-dev-qa-db-fra.com

En utilisant le nombre de déclencheurs pour mettre à jour une autre table

Dis que j'ai une table appelée trx_request avec les données suivantes

id | confirmed(TIME) | finished(TIME)
-------------------------------------
1  | 12:05:00        | NULL
2  | 13:11:00        | NULL

et une autre table appelée trx_updates avec les données suivantes

request(FK) | role(INT) | added(TIME)
------------------------------------------
1           | 1         | 14:02:00

Je voudrais faire une certaine déclenchement qu'après un enregistrement inséré dans trx_updates, compte le nombre d'enregistrements de la même valeur dans le champ request (tel que combien de 1 'est là). Et ensuite, un chèque à voir si le compte atteint 4 ('1' apparaît 4 fois). Quand il le fait, il met à jour le trx_requests.finished jusqu'à maintenant().

Comment faire une déclaration de compte dans les déclencheurs? Ou se déclenchent la voie à suivre?

Merci d'avance.

1
endy.hardy

Ce déclencheur fait le travail:

create trigger trx_updates_atrig
after insert on trx_updates for each row begin
DECLARE updatecount INT;
  set updatecount = ( select count(*) from trx_updates where request = new.request );
  if updatecount=4
    then
      update trx_request set finished=NOW() where id = new.request;
  end if;
end//

Sqlfiddle Demo .

6
Philᵀᴹ