001 package liquibase.statement.core; 002 003 import liquibase.statement.AbstractSqlStatement; 004 005 public class AddForeignKeyConstraintStatement extends AbstractSqlStatement { 006 007 private String baseTableSchemaName; 008 private String baseTableName; 009 private String baseColumnNames; 010 011 private String referencedTableSchemaName; 012 private String referencedTableName; 013 private String referencedColumnNames; 014 015 private String constraintName; 016 017 private boolean deferrable; 018 private boolean initiallyDeferred; 019 020 private String onDelete; 021 private String onUpdate; 022 023 // Some databases supports creation of FK with referention to column marked as unique, not primary 024 // If FK referenced to such unique column this option should be set to false 025 private boolean referencesUniqueColumn = false; 026 027 public AddForeignKeyConstraintStatement(String constraintName, String baseTableSchemaName, String baseTableName, 028 String baseColumnNames, String referencedTableSchemaName, String referencedTableName, 029 String referencedColumnNames) { 030 this.baseTableSchemaName = baseTableSchemaName; 031 this.baseTableName = baseTableName; 032 this.baseColumnNames = baseColumnNames; 033 this.referencedTableSchemaName = referencedTableSchemaName; 034 this.referencedTableName = referencedTableName; 035 this.referencedColumnNames = referencedColumnNames; 036 this.constraintName = constraintName; 037 } 038 039 public String getBaseTableSchemaName() { 040 return baseTableSchemaName; 041 } 042 043 public String getBaseTableName() { 044 return baseTableName; 045 } 046 047 public String getBaseColumnNames() { 048 return baseColumnNames; 049 } 050 051 public String getReferencedTableSchemaName() { 052 return referencedTableSchemaName; 053 } 054 055 public String getReferencedTableName() { 056 return referencedTableName; 057 } 058 059 public String getReferencedColumnNames() { 060 return referencedColumnNames; 061 } 062 063 public String getConstraintName() { 064 return constraintName; 065 } 066 067 public boolean isDeferrable() { 068 return deferrable; 069 } 070 071 public String getOnDelete() { 072 return onDelete; 073 } 074 075 public String getOnUpdate() { 076 return onUpdate; 077 } 078 079 public AddForeignKeyConstraintStatement setDeferrable(boolean deferrable) { 080 this.deferrable = deferrable; 081 return this; 082 } 083 084 public boolean isInitiallyDeferred() { 085 return initiallyDeferred; 086 } 087 088 public AddForeignKeyConstraintStatement setInitiallyDeferred(boolean initiallyDeferred) { 089 this.initiallyDeferred = initiallyDeferred; 090 return this; 091 } 092 093 public AddForeignKeyConstraintStatement setOnUpdate(String updateRule) { 094 this.onUpdate = updateRule; 095 return this; 096 } 097 098 public AddForeignKeyConstraintStatement setOnDelete(String deleteRule) { 099 this.onDelete = deleteRule; 100 return this; 101 } 102 103 public boolean getReferencesUniqueColumn() { 104 return referencesUniqueColumn; 105 } 106 107 public AddForeignKeyConstraintStatement setReferencesUniqueColumn(Boolean referencesUniqueColumn) { 108 if (referencesUniqueColumn != null) { 109 this.referencesUniqueColumn = referencesUniqueColumn; 110 } 111 return this; 112 } 113 }