HEX
Server: Apache/2.4.63 (Unix)
System: Linux Synopilou92 4.4.302+ #72806 SMP Mon Jul 21 23:16:00 CST 2025 x86_64
User: pilou92 (1026)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /volume1/@appstore/SynologyPhotos/etc/sql/31.sql
CREATE OR REPLACE FUNCTION public.update_condition_album_time_trigger_func ()
  RETURNS trigger
  LANGUAGE plpgsql
  VOLATILE
  CALLED ON NULL INPUT
  SECURITY INVOKER
  COST 1
  AS $$
DECLARE
  unit_time integer;
  condition_album_table text;
  max_time bigint;
  min_time bigint;
  record RECORD;
BEGIN
  unit_time = OLD.takentime;
  condition_album_table = TG_TABLE_SCHEMA || '.condition_album';
  FOR record IN EXECUTE format('SELECT * FROM %s WHERE start_time = %L OR end_time = %L', condition_album_table, unit_time, unit_time) LOOP
    EXECUTE format('SELECT COALESCE(max, 0), COALESCE(min, 0) FROM public.get_unit_takentime_by_condition_album(%L)', record.id) INTO max_time, min_time;
    EXECUTE 'UPDATE ' || condition_album_table || ' SET start_time = ' || min_time || ', end_time = ' || max_time || ' WHERE id = ' || record.id;
  END LOOP;
  RETURN NULL;
END;
$$;
DROP TRIGGER IF EXISTS unit_update_takentime_cascade_to_condition_album_trigger ON public.unit CASCADE;
CREATE TRIGGER unit_update_takentime_cascade_to_condition_album_trigger
  AFTER UPDATE OF takentime
  ON public.unit
  FOR EACH ROW
  EXECUTE PROCEDURE public.update_condition_album_time_trigger_func();
DROP TRIGGER IF EXISTS update_condition_album_after_delete_unit_trigger ON public.unit CASCADE;
CREATE TRIGGER update_condition_album_after_delete_unit_trigger
  AFTER DELETE
  ON public.unit
  FOR EACH ROW
  EXECUTE PROCEDURE public.update_condition_album_time_trigger_func();