2016-09-30 6 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: внешний ключ определяется через часть 'reference =" users (id) "'. Это означает, что он ссылается на столбец 'id' таблицы' users'. Это в значительной степени синтаксис, который вы используете в SQL: '... foreign key user_id ссылается на пользователей (id)' –

Смежные вопросы