2016-09-30 10 views
4

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

答えて

8

私は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)を参照します' –

関連する問題