2014-07-13 8 views

Antwort

32

Verwenden Sie ein verschachteltes <constraints>-Tag in Ihrem Spalten-Tag.

Beispiel:

<changeSet id="SAMPLE_1" author="alice"> 
    <createTable tableName="employee"> 
     <column name="id" type="int" autoIncrement="true"> 
      <constraints primaryKey="true"/> 
     </column> 
     <column name="first_name" type="varchar(255)"/> 
     <column name="last_name" type="varchar(255)"> 
      <constraints nullable="false"/> 
     </column> 
    </createTable> 
</changeSet> 

<changeSet id="create address table" author="bob"> 
    <createTable tableName="address"> 
     <column name="id" type="int" autoIncrement="true"> 
      <constraints primaryKey="true"/> 
     </column> 
     <column name="line1" type="varchar(255)"> 
      <constraints nullable="false"/> 
     </column> 
     <column name="line2" type="varchar(255)"/> 
     <column name="city" type="varchar(100)"> 
      <constraints nullable="false"/> 
     </column> 
     <column name="employee_id" type="int"> 
      <constraints nullable="false" foreignKeyName="fk_address_employee" references="employee(id)"/> 
     </column> 
    </createTable> 
</changeSet> 
+3

Jede Idee, wie dies in YAML zu tun? Ich fürchte, die Liquibase-Dokumentation lässt mich immer verloren, verloren oder beides. – MikeB

+4

Gibt es eine Idee, wo die 'references =" employee (id) "' Syntax dokumentiert ist? 'references' ist definiert als [" Fremdschlüsseldefinition "] (http://www.liquibase.org/documentation/column.html), aber Google führt die meisten Anfragen zu' addForeignKeyConstraint', was nicht der beste Weg ist, um zu gehen Sie erstellen eine Tabelle oder fügen Spalten hinzu und haben bereits '' -Tags. – Lambart

+5

Die obige Syntax funktionierte nicht für mich, es erzeugte die folgenden 'REFERENCES null (null))' '. Anstelle von 'references =" employee (id) "' musste ich 'referencedTableName =" employee "verwenden referenzierteColumnNames =" id "' – caspian

-1

Vielleicht können Sie Fremdschlüssel hinzufügen, wie unten:

<changeSet id="1" author="ozhanli"> 
    <!-- 
    Owner Entity. 
    --> 
    <createTable tableName="owner"> 
     <column name="id" type="bigint" autoIncrement="true"> 
      <constraints primaryKey="true" nullable="false"/> 
     </column> 
     <column name="name" type="varchar(255)"> 
      <constraints nullable="true" /> 
     </column> 
    </createTable> 

    <!-- 
    Car Entity. 
    --> 
    <createTable tableName="car"> 
     <column name="id" type="bigint" autoIncrement="true"> 
      <constraints primaryKey="true" nullable="false"/> 
     </column> 
     <column name="brand" type="varchar(255)"> 
      <constraints nullable="true" /> 
     </column> 
     <column name="owner_id" type="bigint"> 
      <constraints nullable="true" /> 
     </column> 
    </createTable> 

    <!-- 
    Constraints for Car entity 
    --> 
    <addForeignKeyConstraint baseColumnNames="owner_id" 
          baseTableName="car" 
          constraintName="fk_car_owner_id" 
          referencedColumnNames="id" 
          referencedTableName="owner"/> 
</changeSet> 
Verwandte Themen