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;
}
}