提问者:小点点

Liquibase:如何在列标签中设置外键约束?


如何通过列标记属性< code>foreignKeyName和< code>references配置外键?我找到的唯一一个例子演示了如何在事后添加外键。


共3个答案

匿名用户

使用嵌套的

示例:

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

匿名用户

您必须添加外部约束,例如:

- 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)

匿名用户

也许你可以按如下方式添加外键:

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