Transform Foreign Keys

ForeignKey is a special case where not just a connector is created - you must also list the columns involved in the transformation.

In addition, tags specified on the connector are actually created on the foreign key operation in the source Class, and a cascade property can be added cascade="update","delete".

The following example is from the DDL transform "Connector" template.

For the Template:

 ForeignKey

 {

  %TRANSFORM_REFERENCE("FK1",connectorGUID)%

  Source

   {

    %TRANSFORM_REFERENCE("LinkTable",connectorGUID)%

     name=%qt%%connectorDestElemName%%qt%

   Column

    {

         name=%qt%%CONVERT_NAME(connectorDestElemName, "Pascal Case","Camel Case")%ID%qt%

           type=%qt%%CONVERT_TYPE(genOptDefaultDatabase,"Integer")%%qt%

     }

   }

   Target

   {

    %TRANSFORM_REFERENCE("Table",connectorDestElemGUID)%

    Column

     {

       name=%qt%%CONVERT_NAME(connectorDestElemName, "Pascal Case","Camel Case")%ID%qt%

       type=%qt%%CONVERT_TYPE(genOptDefaultDatabase,"Integer")%%qt%

   }

   }

 }

 

 

The following code is generated for a Foreign Key:

 

 ForeignKey

 {

   XRef{namespace="DDL" name="FK1" source="{18ED24EA-0669-499c-A066-FABEE6772ED1}"}

   Source

   {

     XRef{namespace="DDL" name="Table" source="{CC6A084C-9B56-4a1e-8196-C66A74E59B66}"}

     name="FK_account"

     multiplicity="0..*"

     Column

     {

       name="account"

       type="INTEGER"

     }

   }

   Target

   {

     XRef{namespace="DDL" name="Table" source="{791AEAB5-7831-4d2a-92C7-198C10B31AF0}"}

     multiplicity="1"

     Column

     {

       name="accountID"

       type="INTEGER"

     }

   }

 }