-- =============================================
-- Author:		Marat Zigangaraev
-- Create date: 2015/05/22
-- Description:	Проверка вставки квоты на группы для 
--              предотвращения участия одного ресурса в разных группах квот
-- =============================================
DROP FUNCTION IF EXISTS sp_CheckResourceQuotaGroup;
DROP PROCEDURE IF EXISTS public.sp_CheckResourceQuotaGroup;
CREATE PROCEDURE public.sp_CheckResourceQuotaGroup
(
)
    language plpgsql
as
$$
Begin
	if exists 
    (
    	select count(distinct g.ResourceQuotaGroupID)
    	from AKUZ.T_RESOURCE_QUOTA_GROUP g
    	join AKUZ.T_RESOURCE_QUOTA q On g.ResourceQuota = q.ResourceQuotaID
    	join AKUZ.T_RESOURCE_QUOTA_LINK s On q.ResourceQuotaLink = s.ResourceQuotaLinkID
    	join AKUZ.T_RESOURCE_GROUP_LINK l on g.ResourceGroup = l.ResourceGroup
    	group by l.Resource, s.Resource, q.ResourceQuotaID 
    	having count(distinct g.ResourceQuotaGroupID) > 1
    )
	then
		Raise Exception Using Message = 'В группе квоты существуют ресурсы, которые уже включены в группу квот.';
		return;
	end if;
End;
$$;