Wie kann ich Fremdschlüssel über Spaltenattribute foreignKeyName
und references
konfigurieren? Das einzige Beispiel, das ich gefunden habe, zeigt how to add foreign keys after the fact.Liquibase: Festlegen der Fremdschlüsseleinschränkung im Spalten-Tag?
25
A
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>
-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
- 1. Wie sortierbares Attribut der Anzeige: Spaltentag funktioniert?
- 2. Löschen der Fremdschlüsseleinschränkung
- 3. Festlegen der Prozessaffinität im Kernelmodus
- 4. Zusammengesetzte Fremdschlüsseleinschränkung
- 5. Kolben Fremdschlüsseleinschränkung
- 6. Festlegen der Elementbreite oder -höhe im Standardmodus
- 7. MaxOperationTimeout im Cluster festlegen
- 8. Namenskonvention für Fremdschlüsseleinschränkung ändern
- 9. Datenbankeinfügung schlägt aufgrund der Fremdschlüsseleinschränkung fehl
- 10. MySQL Fremdschlüsseleinschränkung - Ganzzahl Spalte
- 11. Warum und wann Liquibase?
- 12. Fremdschlüsseleinschränkung in Sqlite3 fehlgeschlagen
- 13. Liquibase-Vorbedingung wird ignoriert
- 14. Verwendung von Liquibase in der vorhandenen Datenbank
- 15. Automatische Vervollständigung der Liquibase-Datenbank mit Eclipse
- 16. Liquibase - Liste der verfügbaren generischen Datentypen
- 17. Spring-Boot-Liquibase-Integration
- 18. Liquibase Grails Datenbank Migrationen
- 19. Liquibase CSV-Importfehler
- 20. Festlegen des Standardwerts im Ruhezustand
- 21. Liquibase Mysql Store Newline
- 22. Liquibase-Sperre - Gründe?
- 23. Liquibase Standardwert hinzufügen
- 24. liquibase Oracle ORA-00942
- 25. SQL Server 2005: Nullable Fremdschlüsseleinschränkung
- 26. mySQL: Was verhindert meine Fremdschlüsseleinschränkung?
- 27. Unterstützung für Fremdschlüsseleinschränkung in Rails
- 28. Festlegen des Schriftartnamens und der Schriftgröße im AS3-Listensteuerelement (flash.controls.List)
- 29. Festlegen der UIButton Layer-Rahmenbreite und -farbe im Interface Builder
- 30. Festlegen der Eigenschaft 'Standard-Kaskade' im Ruhezustand global
Jede Idee, wie dies in YAML zu tun? Ich fürchte, die Liquibase-Dokumentation lässt mich immer verloren, verloren oder beides. – MikeB
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
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