如何在Liquibase中创建具有外键约束的表?

god*_*zsa 9 liquibase

我正在使用yaml,但我猜它几乎与xml或json相同.我发现你可以使用addForeignKeyConstraint,但我想在创建表时添加约束,而不是改变现有的表.我该怎么办?我可以这样做吗?

  - changeSet:
      id: create_questions
      author: Author
      changes:
        - createTable:
            tableName: questions
            columns:
              - column:
                  name: id
                  type: int
                  autoIncrement: true
                  constraints:
                    primaryKey: true
                    nullable: false
              - column:
                  name: user_id
                  type: int
                  constraints:
                    foreignKey:
                      referencedColumnNames: id
                      referencedTableName: users
                    nullable: false
              - column:
                  name: question
                  type: varchar(255)
                  constraints:
                    nullable: false
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 17

我从未使用过YAML格式,但在XML更新日志中,您可以这样做:

<column name="user_id" type="int">
   <constraints nullable="false" 
                foreignKeyName="fk_questions_author" 
                references="users(id)"/>
</column>
Run Code Online (Sandbox Code Playgroud)

等效的YAML应该是这样的:

- column:
    name: user_id
    type: int
    constraints:
        nullable: false
        foreignKeyName: fk_questions_author
        references: users(id)
Run Code Online (Sandbox Code Playgroud)

  • @godzsa:外键是通过`references ="users(id)"`part定义的.这意味着它引用了`users`表的`id`列.它几乎就是你在SQL中使用的语法:`...外键user_id引用用户(id)` (5认同)