如何在Liquibase中使用外键约束创建表?

问题描述:

我使用yaml,但我想它几乎与xml或json相同。我发现你可以使用addForeignKeyConstraint,但我想在表创建时添加约束,而不是改变现有的表。我应该怎么做?我可以做这样的事吗?如何在Liquibase中使用外键约束创建表?

- 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 

我从来没有使用YAML格式,但在一个XML更改,你可以这样做:

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

等效YAML应该是这样的:

- column: 
    name: user_id 
    type: int 
    constraints: 
     nullable: false 
     foreignKeyName: fk_questions_author 
     references: users(id) 
+0

但你在哪里定义什么是fk_questions_author?你必须写一个changeSet来定义它吗? – godzsa

+1

@godzsa:外键通过'references =“users(id)”'部分定义。这意味着它引用'users'表的'id'列。它几乎是你在SQL中使用的语法:'...外键user_id引用用户(id)' –