package liquibase.statement.core; import liquibase.statement.AbstractSqlStatement; public class AddForeignKeyConstraintStatement extends AbstractSqlStatement { private String baseTableSchemaName; private String baseTableName; private String baseColumnNames; private String referencedTableSchemaName; private String referencedTableName; private String referencedColumnNames; private String constraintName; private boolean deferrable; private boolean initiallyDeferred; private String onDelete; private String onUpdate; // Some databases supports creation of FK with referention to column marked as unique, not primary // If FK referenced to such unique column this option should be set to false private boolean referencesUniqueColumn = false; public AddForeignKeyConstraintStatement(String constraintName, String baseTableSchemaName, String baseTableName, String baseColumnNames, String referencedTableSchemaName, String referencedTableName, String referencedColumnNames) { this.baseTableSchemaName = baseTableSchemaName; this.baseTableName = baseTableName; this.baseColumnNames = baseColumnNames; this.referencedTableSchemaName = referencedTableSchemaName; this.referencedTableName = referencedTableName; this.referencedColumnNames = referencedColumnNames; this.constraintName = constraintName; } public String getBaseTableSchemaName() { return baseTableSchemaName; } public String getBaseTableName() { return baseTableName; } public String getBaseColumnNames() { return baseColumnNames; } public String getReferencedTableSchemaName() { return referencedTableSchemaName; } public String getReferencedTableName() { return referencedTableName; } public String getReferencedColumnNames() { return referencedColumnNames; } public String getConstraintName() { return constraintName; } public boolean isDeferrable() { return deferrable; } public String getOnDelete() { return onDelete; } public String getOnUpdate() { return onUpdate; } public AddForeignKeyConstraintStatement setDeferrable(boolean deferrable) { this.deferrable = deferrable; return this; } public boolean isInitiallyDeferred() { return initiallyDeferred; } public AddForeignKeyConstraintStatement setInitiallyDeferred(boolean initiallyDeferred) { this.initiallyDeferred = initiallyDeferred; return this; } public AddForeignKeyConstraintStatement setOnUpdate(String updateRule) { this.onUpdate = updateRule; return this; } public AddForeignKeyConstraintStatement setOnDelete(String deleteRule) { this.onDelete = deleteRule; return this; } public boolean getReferencesUniqueColumn() { return referencesUniqueColumn; } public AddForeignKeyConstraintStatement setReferencesUniqueColumn(Boolean referencesUniqueColumn) { if (referencesUniqueColumn != null) { this.referencesUniqueColumn = referencesUniqueColumn; } return this; } }