TR_PDACCOUNTSTRUCTURE_VALIDATE

Definition

Copy


CREATE trigger dbo.TR_PDACCOUNTSTRUCTURE_VALIDATE on dbo.PDACCOUNTSTRUCTURE
for insert, update not for replication as
begin
  set nocount on;
  declare @ISBASICGL bit, @PDACCOUNTSYSTEMID uniqueidentifier
  select top 1 @ISBASICGL = ISBASICGL, @PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMID from inserted
  if @ISBASICGL = 0 and (select count(*) from INSERTED) > 0
  begin try
    declare @COUNT int;

    if exists(select 1 from inserted where not ((charindex('*',DESCRIPTION) = 0) and (charindex('?',DESCRIPTION) = 0)))
    begin
      raiserror('CK_PDACCOUNTSTRUCTURE_DESCRIPTIONVALIDCHARACTERS', 16, 1)
      rollback
    end

    -- Validate total number of elements

    select @COUNT = COUNT(1)
    from dbo.PDACCOUNTSTRUCTURE ST
    full outer join inserted T1 on ST.ID = T1.ID
    where T1.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID or ST.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
    if @COUNT > 30
      raiserror ('ERR_PDACCOUNTSTRUCTURE_NUMBEROFELEMENTS',13,1);

    -- Validate total length, including separators, -1 for last separator

    select @COUNT = SUM(case when T1.ID is null then ST.[LENGTH] else T1.[LENGTH] end) + count(*) - 1
    from dbo.PDACCOUNTSTRUCTURE ST
    full outer join inserted T1 on ST.ID = T1.ID
    where (T1.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID or ST.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID)
      and ((case when T1.ID is null then ST.ELEMENTTYPECODE else T1.ELEMENTTYPECODE end) = 1)
    if @COUNT > 100
      raiserror ('ERR_PDACCOUNTSTRUCTURE_TOTALLENGTH',13,1);
  end try
  begin catch
    exec dbo.USP_RAISE_ERROR
  end catch
end