File: /volume1/@appstore/SynologyPhotos/etc/sql/40.sql
DROP FUNCTION IF EXISTS public.delete_person_item_count_func() CASCADE;
CREATE FUNCTION public.delete_person_item_count_func()
RETURNS trigger
LANGUAGE plpgsql
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 1
AS $$
DECLARE
new_count integer;
BEGIN
SELECT count(DISTINCT id_item) AS item_count FROM person_face_view
WHERE id_user = OLD.id_user AND id_person = OLD.id_person AND is_major = 't'
INTO new_count;
IF (new_count > 0) THEN
UPDATE public.person_item_count SET item_count = new_count WHERE id_person = OLD.id_person AND id_user = OLD.id_user;
ELSE
DELETE FROM public.person_item_count WHERE id_person = OLD.id_person AND id_user = OLD.id_user;
END IF;
RETURN NULL;
END;
$$;
DROP TRIGGER IF EXISTS delete_person_item_count_trigger ON public.face CASCADE;
CREATE TRIGGER delete_person_item_count_trigger
AFTER DELETE
ON public.face
FOR EACH ROW EXECUTE PROCEDURE public.delete_person_item_count_func();