What Gen Encyclopedia SQL can be used to identify Action Blocks that use Referential Integrity (RI) Triggers.
When doing analysis on a data model or considering changes to a data model that will affect Referential Integrity (RI) Triggers, it is useful to identify all of the action blocks that use RI triggers. Any change to a relationship or to the identifier for an entity type has the potential to require regeneration of RI triggers and the action diagrams that use them.
The SQL below looks at all DELETE, DISASSOCIATE, and TRANSFER statements in a model to find action blocks that contain those statements since those are the statements that use RI triggers. This article lists the SQL, for the Host Encyclopedia and the CSE, and then describes the differences between the two.
For reference, the metamodel codes used are as follows and can be found in Gen windows Installation file "%Gen86%\Gen\odrpta.chm"
Object type codes
21 ACBLKBSD
23 ACBLKBAA
27 DELETE
39 PRDRD (disassociate)
40 PRDRT (transfer)
Association type codes
3 ACTDON
6 ACTSON
25 CNTENTS (entity action view group)
26 CNTIMPS (import view group)
31 CNTOUTS (export view group)
36 CONTAINS
76 DTLBYP
88 GRPBY
Property type code
224 NAME
SELECT DISTINCT P.PROP_CHAR_VAL, H.OBJ_ID, OT_OBJ_NAME FROM DMDL A, DOBJ H, DASC G, DASC F, DASC D, DPRP P, DASC C, DOBJ B,SOBJ WHERE A.MODEL_NAME = 'MODEL_NAME' AND H.OBJ_MODEL_ID = A.MODEL_ID AND H.OBJ_TYPE_CODE = 27 AND OT_OBJ_CODE = H.OBJ_TYPE_CODE AND OT_RELEASE = 'RELEASE' AND H.OBJ_ID = G.ASSOC_TO_OBJ_ID AND G.ASSOC_TYPE_CODE = 3 AND G.ASSOC_FROM_OBJ_ID = F.ASSOC_TO_OBJ_ID AND F.ASSOC_TYPE_CODE = 36 AND D.ASSOC_TO_OBJ_ID = F.ASSOC_FROM_OBJ_ID AND D.ASSOC_TYPE_CODE IN (25, 31, 26) AND C.ASSOC_TO_OBJ_ID = D.ASSOC_FROM_OBJ_ID AND C.ASSOC_TYPE_CODE = 88 AND C.ASSOC_FROM_OBJ_ID = B.OBJ_ID AND B.OBJ_TYPE_CODE IN (21, 23) AND P.PROP_OBJ_ID = B.OBJ_ID AND P.PROP_TYPE_CODE = 224 UNION SELECT DISTINCT P2.PROP_CHAR_VAL, H2.OBJ_ID, OT_OBJ_NAME FROM DMDL A2, DOBJ B2, DASC C2, DASC D2, DASC F2, DOBJ H2, DASC J2, DASC I2, DPRP P2, SOBJ WHERE A2.MODEL_NAME = 'MODEL_NAME' AND H2.OBJ_MODEL_ID = A2.MODEL_ID AND H2.OBJ_TYPE_CODE IN (39, 40) AND OT_OBJ_CODE = H2.OBJ_TYPE_CODE AND OT_RELEASE = 'RELEASE' AND I2.ASSOC_FROM_OBJ_ID = H2.OBJ_ID AND I2.ASSOC_TYPE_CODE = 6 AND J2.ASSOC_TO_OBJ_ID = I2.ASSOC_TO_OBJ_ID AND J2.ASSOC_TYPE_CODE = 76 AND J2.ASSOC_FROM_OBJ_ID = F2.ASSOC_TO_OBJ_ID AND F2.ASSOC_TYPE_CODE = 36 AND D2.ASSOC_TO_OBJ_ID = F2.ASSOC_FROM_OBJ_ID ANDD2.ASSOC_TYPE_CODE IN (26, 31, 25) AND C2.ASSOC_TO_OBJ_ID = D2.ASSOC_FROM_OBJ_ID AND C2.ASSOC_TYPE_CODE = 88 AND C2.ASSOC_FROM_OBJ_ID = B2.OBJ_ID AND B2.OBJ_TYPE_CODE IN (21, 23) AND P2.PROP_OBJ_ID = B2.OBJ_ID AND P2.PROP_TYPE_CODE = 224;
SELECT DISTINCT B.OBJ_NAME, H.OBJ_ID, OT_OBJ_NAME FROM DMDL A, DOBJ H, DASC G, DASC F, DASC D, DASC C, DOBJ B, SOBJ WHERE A.MODEL_NAME = 'MODEL_NAME' AND H.OBJ_MODEL_ID = A.MODEL_ID AND H.OBJ_TYPE_CODE = 27 AND OT_OBJ_CODE = H.OBJ_TYPE_CODE AND OT_RELEASE = 'RELEASE' AND H.OBJ_ID = G.ASSOC_TO_OBJ_ID AND G.ASSOC_TYPE_CODE = 3 AND G.ASSOC_FROM_OBJ_ID = F.ASSOC_TO_OBJ_ID AND F.ASSOC_TYPE_CODE = 36 AND D.ASSOC_TO_OBJ_ID = F.ASSOC_FROM_OBJ_ID AND D.ASSOC_TYPE_CODE IN (25, 31, 26) AND C.ASSOC_TO_OBJ_ID = D.ASSOC_FROM_OBJ_ID AND C.ASSOC_TYPE_CODE = 88 AND C.ASSOC_FROM_OBJ_ID = B.OBJ_ID AND B.OBJ_TYPE_CODE IN (21, 23) UNION SELECT DISTINCT B2.OBJ_NAME, H2.OBJ_ID, OT_OBJ_NAME FROM DMDL A2, DOBJ B2, DASC C2, DASC D2, DASC F2, DOBJ H2, DASC J2, DASC I2, SOBJ WHERE A2.MODEL_NAME = 'MODEL_NAME' AND H2.OBJ_MODEL_ID = A2.MODEL_ID AND H2.OBJ_TYPE_CODE IN (39, 40) AND OT_OBJ_CODE = H2.OBJ_TYPE_CODE AND OT_RELEASE = 'RELEASE' AND I2.ASSOC_FROM_OBJ_ID = H2.OBJ_ID AND I2.ASSOC_TYPE_CODE = 6 AND J2.ASSOC_TO_OBJ_ID = I2.ASSOC_TO_OBJ_ID AND J2.ASSOC_TYPE_CODE = 76 AND J2.ASSOC_FROM_OBJ_ID = F2.ASSOC_TO_OBJ_ID AND F2.ASSOC_TYPE_CODE = 36 AND D2.ASSOC_TO_OBJ_ID = F2.ASSOC_FROM_OBJ_ID AND D2.ASSOC_TYPE_CODE IN (26, 31, 25) AND C2.ASSOC_TO_OBJ_ID = D2.ASSOC_FROM_OBJ_ID AND C2.ASSOC_TYPE_CODE = 88 AND C2.ASSOC_FROM_OBJ_ID = B2.OBJ_ID AND B2.OBJ_TYPE_CODE IN (21, 23);
NOTES: