>[index on upper(ChildTB) + Padl(InsTrigger, 2) tag ChildIns] && create multiple indices at design!!! >set order to ChildIns >lcSeekSearch = m.lcSearch + Padl(1, 2) >if seek(lcSeekSearch) > scan while upper(ChildTB) + Padl(InsTrigger, 2) = m.lcSeekSearch for not m.plError > endscan >endif >>
>lcSeekSearch = m.lcSearch + Padl(1, 2) >scan for upper(ChildTB) + Padl(InsTrigger, 2) = m.lcSeekSearch and not m.plError >endscan>
if cL_USE_AGAIN select (m.lnSelRIDefi) else select RIDefinitions endif do case case m.lnTriggerType = cnUpdateCode && Update trigger * set order to UpdTrig scan for SearchTB = m.lcSearch and not empty(UpdCommand) and !m.plError&&and not empty(UpdCommand) lcParent = ParentTB lcChild = ChildTB if m.lcSearch = m.lcParent if m.lcParent <> m.lcChild if not m.lcParentTag = alltrim(ParentTag) lcParentTag = alltrim(ParentTag) lcParentKeyExp = alltrim(ParentKey) luOldKey = oldval(m.lcParentKeyExp, m.lcAlias) select (m.lcAlias) luNewKey = evaluate( m.lcParentKeyExp ) if cL_USE_AGAIN select (m.lnSelRIDefi) else select RIDefinitions endif endif else && very rare case of self-join luOldKey = oldval(m.lcChildKeyExp, m.lcAlias) select (m.lcAlias) luNewKey = evaluate(m.lcChildKeyExp) if cL_USE_AGAIN select (m.lnSelRIDefi) else select RIDefinitions endif endif else && m.lcChild = m.lcSearch if not m.lcChildTag = alltrim(ChildTag) lcChildTag = alltrim(ChildTag) lcChildKeyExp = alltrim(ChildKey) luOldKey = oldval(m.lcChildKeyExp, m.lcAlias) select (m.lcAlias) luNewKey = evaluate( m.lcChildKeyExp ) if cL_USE_AGAIN select (m.lnSelRIDefi) else select RIDefinitions endif endif endif if m.luNewKey <> m.luOldKey && Check for IsNull is embedded indirectly) =evaluate(alltrim(UpdCommand)) endif endscan case m.lnTriggerType = cnInsertCode && Insert trigger * set order to InsTrig scan for SearchTB = m.lcSearch and not empty(InsCommand) and !m.plError && and not empty(InsCommand) if vartype(m.pcCascadeParent) <> "C" or m.pcCascadeParent <> alltrim(ParentTB) if m.lcChildKeyExp <> alltrim(ChildKey) && we don't want to evaluate more times than needed lcChildKeyExp = alltrim(ChildKey) select (m.lcAlias) luNewKey = evaluate(m.lcChildKeyExp) if cL_USE_AGAIN select (m.lnSelRIDefi) else select RIDefinitions endif endif if !isnull(m.luNewKey) =evaluate(alltrim(InsCommand)) endif endif endscan case m.lnTriggerType = cnDeleteCode && Delete trigger * set order to DelTrig scan for SearchTB = m.lcSearch and not empty(DelCommand) and not m.plError &&and not empty(DelCommand) if not m.lcParentTag = alltrim(ParentTag) lcParentTag = alltrim(ParentTag) lcParentKeyExp = alltrim(ParentKey) select (m.lcAlias) luKey = evaluate( m.lcParentKeyExp ) if cL_USE_AGAIN select (m.lnSelRIDefi) else select RIDefinitions endif endif if not isnull(m.luKey) =evaluate(alltrim(DelCommand)) endif endscan endcase