2017-08-17 1 views
0

Je souhaite créer le nom de la table birthrate correspondant à la table principale birth_t, donc lorsque j'insère des données dans birth_t, la table automatiquement birthrate sera également mise à jour.Comment créer un déclencheur lors de la mise à jour d'une autre table

Birth_t champs:

  1. Birth_id
  2. Nom
  3. Lieu de naissance
  4. Date de naissance
  5. Sexe
  6. Taille
  7. Poids
  8. Mère
  9. Père

Birthrate champs:

  1. Id
  2. Année (de Birthdate champ)
  3. Somme (sommation taux de natalité de l'année, donc nous savons combien de bébés qui naissent dans certaine année)

Comment créer un déclencheur pour ceux-ci?

Répondre

0

Vous devrez obtenir l'année de Birthdate et la comparer aux enregistrements de l'autre table pour mettre à jour l'enregistrement applicable. Voici comment vous pouvez le faire:

delimiter | 

CREATE TRIGGER birthrata_update BEFORE INSERT ON test1 
    FOR EACH ROW 
    BEGIN 
    insert into Birthrate(Year, Sum) 
    select New.Year, 0 
    from BirthRate 
    where not exists (select 1 from BirthRate BR where BR.Year = New.Year limit 0, 1); 
    update Birthrate 
    set Sum = Sum + 1 
    where Birthrate.Year = YEAR(NEW.Birthdate); 
    END; 
| 

Ce déclencheur devrait insérer une ligne à BirthRate si elle n'existait pas avec une valeur initiale de 0. Et puis il incrémente la Sum.