如何在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)
但你在哪里定义什么是fk_questions_author?你必须写一个changeSet来定义它吗? – godzsa
@godzsa:外键通过'references =“users(id)”'部分定义。这意味着它引用'users'表的'id'列。它几乎是你在SQL中使用的语法:'...外键user_id引用用户(id)' –