Cela suppose que vous avez déjà créé le record du jour/lake_name/station avant d'insérer des températures ce jour-là. Bien sûr, vous pouvez ajouter un autre déclencheur pour le faire.
create trigger Temperature_count_insert_trigger_hi after insert on Temperature
when new.temperature_f >= 75
begin
update Temperature_summary set count_readings_over_75f = count_readings_over_75f + 1
where new.day = day and new.lake_name = lake_name and new.station = station;
end;
create trigger Temperature_count_insert_trigger_lo after insert on Temperature
when new.temperature_f < 75
begin
update Temperature_summary set count_readings_below_75f = count_readings_below_75f + 1
where new.day = day and new.lake_name = lake_name and new.station = station;
end;
Vous pouvez combiner en un déclencheur légèrement plus complexe
create trigger Temperature_count_insert_trigger after insert on Temperature
begin
update Temperature_summary
set count_readings_below_75f = count_readings_below_75f + (new.temperature_f < 75),
count_readings_over_75f = count_readings_over_75f + (new.temperature_f >= 75)
where new.day = day and new.lake_name = lake_name and new.station = station;
end;
Pour assurer qu'il ya une ligne de Temperature_summary mettre à jour (a) faire un index unique sur (day, lake_name, station)
de Temperature_summary, ou faire ces colonnes la clé primaire, et (b) faire un insert ou d'ignorer dans la détente comme ceci:
create trigger Temperature_count_insert_trigger after insert on Temperature
begin
insert or ignore into Temperature_summary
values (new.day, new.lake_name, new.station, 0, 0);
update Temperature_summary
set count_readings_below_75f = count_readings_below_75f + (new.temperature_f < 75),
count_readings_over_75f = count_readings_over_75f + (new.temperature_f >= 75)
where new.day = day and new.lake_name = lake_name and new.station = station;
end;
Comment est-ce lié à ruby? Cherchez-vous l'implémentation de sql uniquement ou dans votre application ruby? – Zepplock
Oups. C'est une habitude de marquer mes questions en tant que rubis. Je l'utilise beaucoup. Fixé maintenant – jrhicks