// References Constraint
// --------------------------
if ( columnDefinition.mReferenced != null && !columns.mVersioned ) {
ForeignKey foreignKey = new ForeignKey();
Reference reference = new Reference();
String referencedTableName = columnDefinition.mReferenced.substring(
0, columnDefinition.mReferenced.indexOf("(")
);
String referencedColumnName = columnDefinition.mReferenced.substring(
columnDefinition.mReferenced.indexOf("(") + 1,
columnDefinition.mReferenced.indexOf(")")
);
org.apache.ddlutils.model.Table referencedTable = pDb.findTable(referencedTableName);
String fkName = (t.getName()
+ c.getName()
+ "FK"
+ referencedTableName
+ referencedColumnName);
foreignKey.setName(fkName);
if ( referencedTable != null ) {
Column referencedColumn = referencedTable.findColumn(referencedColumnName);
if ( referencedTable.getName().equals(t.getName())
&& pRepository.isLoggingDebug()
&& referencedColumn.getName().equals(c.getName()) ) {
if ( pRepository.isLoggingDebug() ) {
pRepository.logDebug(
"Skipping foreign key constraint, table and column are the same. Table.Column="
+ referencedTableName
+ "."
+ referencedColumnName
);
}
} else {
reference.setForeignColumn(referencedColumn);
reference.setLocalColumn(c);
foreignKey.addReference(reference);
foreignKey.setForeignTable(referencedTable);
// try to find existing fk
ForeignKey existingKey = t.findForeignKey(foreignKey);
// don't add this fk if the name is already used
if ( existingKey == null ) {
t.addForeignKey(foreignKey);
}
}