File: /volume1/@appstore/SynologyPhotos/etc/sql/9.sql
DROP TABLE unit_similar_hash;
DROP TABLE many_similar_group_has_many_item;
DROP TABLE similar_group;
DROP FUNCTION IF EXISTS public.update_similar_info_func() CASCADE;
DROP FUNCTION IF EXISTS public.update_similar_group_count(text, integer) CASCADE;
DROP FUNCTION IF EXISTS public.update_similar_group_cover(text, integer) CASCADE;
CREATE OR REPLACE FUNCTION public.unit_update_id_item_func ( schema text, item_id integer, new_item_id integer)
RETURNS void
LANGUAGE plpgsql
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 1
AS $$
DECLARE
many_item_has_many_normal_album_table text;
album_array bigint[];
album_id bigint;
record RECORD;
BEGIN
many_item_has_many_normal_album_table = schema || '.many_item_has_many_normal_album';
EXECUTE format('SELECT array_agg(id_normal_album) FROM %s WHERE id_item = %L', many_item_has_many_normal_album_table, item_id) INTO album_array;
IF (album_array IS NOT NULL) THEN
FOREACH album_id IN ARRAY album_array LOOP
EXECUTE format('SELECT * FROM %s WHERE id_normal_album = %L AND id_item = %L', many_item_has_many_normal_album_table, album_id, new_item_id) INTO record;
IF (record IS NULL) THEN
EXECUTE format('UPDATE %s SET id_item = %L WHERE id_normal_album = %L AND id_item = %L', many_item_has_many_normal_album_table, new_item_id, album_id, item_id);
END IF;
END LOOP;
END IF;
END
$$;