TR_CLASSCATEGORY_IUD

Definition

Copy


CREATE trigger TR_CLASSCATEGORY_IUD on dbo.CLASSCATEGORY for insert, update, delete not for replication as
begin
    set nocount on;
    begin try
        if exists(
            select CLASS.ID
            from dbo.CLASS
            left outer join dbo.CLASSCATEGORY on CLASS.ID = CLASSCATEGORY.CLASSID
            where (CLASS.ID in (select CLASSID from INSERTED) or CLASS.ID in (select CLASSID from DELETED)) and (CLASS.USECATEGORYPERCENTAGES = 1)
            group by CLASS.ID
            having SUM(CLASSCATEGORY.TOTALGRADEPERCENTAGE) != 100
        )
            raiserror('BBERR_CLASSCATEGORY_PERCENTAGESNOTEQUALHUNDRED', 13,1);
        if exists(
            select CLASS.ID
            from dbo.CLASS
            left outer join dbo.CLASSCATEGORY on CLASS.ID = CLASSCATEGORY.CLASSID
            where (CLASS.ID in (select CLASSID from INSERTED) or CLASS.ID in (select CLASSID from DELETED)) and (CLASS.USECATEGORYPERCENTAGES = 0)
            and CLASSCATEGORY.TOTALGRADEPERCENTAGE <> 0
        )
            raiserror('BBERR_CLASSCATEGORY_PERCENTAGESNONZERO', 13,1);
        if exists(
            select CLASS.ID
            from dbo.CLASS
            left outer join dbo.CLASSCATEGORY on CLASS.ID = CLASSCATEGORY.CLASSID
            where (CLASS.ID in (select CLASSID from INSERTED) or CLASS.ID in (select CLASSID from DELETED)) and (CLASS.USECATEGORYPERCENTAGES = 0)
            and CLASSCATEGORY.AVERAGINGMETHODCODE = 2
        )
            raiserror('BBERR_CLASSCATEGORY_AVERAGINGNMETHODINVALID', 13,1);                
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR;
    end catch
end