Liquibase: How to Set Foreign Key(s) Constraint in Column Tag?
Use a nested <constraints>
tag in your column tag.
Example:
<changeSet id="SAMPLE_1" author="alice"> <createTable tableName="employee"> <column name="id" type="int" autoIncrement="true"> <constraints primaryKey="true"/> </column> <column name="first_name" type="varchar(255)"/> <column name="last_name" type="varchar(255)"> <constraints nullable="false"/> </column> </createTable></changeSet><changeSet id="create address table" author="bob"> <createTable tableName="address"> <column name="id" type="int" autoIncrement="true"> <constraints primaryKey="true"/> </column> <column name="line1" type="varchar(255)"> <constraints nullable="false"/> </column> <column name="line2" type="varchar(255)"/> <column name="city" type="varchar(100)"> <constraints nullable="false"/> </column> <column name="employee_id" type="int"> <constraints nullable="false" foreignKeyName="fk_address_employee" references="employee(id)"/> </column> </createTable></changeSet>
you have to add foreign constraint like:
- changeSet: id: create_account_table author: ankit changes: - createTable: tableName: account columns: - column: name: accn_id type: uuid constraints: primaryKey: true primaryKeyName: pk_account- changeSet: id: create_table_abc author: ankit changes: - createTable: tableName: abc columns: - column: name: id type: uuid constraints: primaryKey: true primaryKeyName: pk_abc - column: name: accn_id type: UUID constraints: nullable: false foreignKeyName: fk_abc_account references: account(accn_id)
Maybe you can add foreign key as below:
<changeSet id="1" author="ozhanli"> <!-- Owner Entity. --> <createTable tableName="owner"> <column name="id" type="bigint" autoIncrement="true"> <constraints primaryKey="true" nullable="false"/> </column> <column name="name" type="varchar(255)"> <constraints nullable="true" /> </column> </createTable> <!-- Car Entity. --> <createTable tableName="car"> <column name="id" type="bigint" autoIncrement="true"> <constraints primaryKey="true" nullable="false"/> </column> <column name="brand" type="varchar(255)"> <constraints nullable="true" /> </column> <column name="owner_id" type="bigint"> <constraints nullable="true" /> </column> </createTable> <!-- Constraints for Car entity --> <addForeignKeyConstraint baseColumnNames="owner_id" baseTableName="car" constraintName="fk_car_owner_id" referencedColumnNames="id" referencedTableName="owner"/></changeSet>