File: /volume1/@appstore/SynologyPhotos/etc/sql/59.sql
CREATE OR REPLACE FUNCTION public.drop_constraint_for_all_condition_album_item_tables()
RETURNS VOID AS
$$
DECLARE
album_id integer;
BEGIN
FOR album_id IN SELECT id FROM condition_album LOOP
EXECUTE 'ALTER TABLE condition_album_item_' || album_id || ' DROP CONSTRAINT IF EXISTS item_fk';
END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT drop_constraint_for_all_condition_album_item_tables();
ALTER TABLE condition_album ADD COLUMN need_update_item boolean NOT NULL DEFAULT FALSE;
CREATE OR REPLACE FUNCTION public.update_condition_album_cover_func ( schema text, album_id integer, old_item_id integer)
RETURNS void
LANGUAGE plpgsql
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 1
AS $$
DECLARE
condition_album_table text;
condition_album_item_table text;
item_id integer;
BEGIN
condition_album_table = schema || '.condition_album';
condition_album_item_table = schema || '.condition_album_item_' || album_id;
EXECUTE format('DELETE FROM %s WHERE id_item = %L', condition_album_item_table, old_item_id);
EXECUTE format('SELECT id_item FROM %s LIMIT 1', condition_album_item_table) INTO item_id;
IF item_id IS NULL THEN
item_id = 0;
END IF;
EXECUTE format('UPDATE %s SET cover = %L, need_update_item = true WHERE id = %L', condition_album_table, item_id, album_id);
END
$$;