Come posso configurare le chiavi esterne tramite gli attributi di tag colonna foreignKeyName
e references
? L'unico esempio che ho trovato dimostra how to add foreign keys after the fact.Liquibase: come impostare il vincolo di chiave esterna nel tag colonna?
25
A
risposta
32
Utilizzare un tag nidificato <constraints>
nel tag colonna.
Esempio:
<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
Forse si può aggiungere chiave esterna, come di seguito:
<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>
Problemi correlati
- 1. Vincolo chiave esterna MySQL - Colonna intero
- 2. vincolo di chiave esterna SailsJS
- 3. differenze tra "chiave esterna" e "chiave esterna vincolo"
- 4. Elixir Ecto: come convalidare il vincolo di chiave esterna?
- 5. Come rimuovere il vincolo di chiave esterna in sql server?
- 6. MySQL: cancella una riga ignorando il vincolo di chiave esterna
- 7. Alter table per fornire il vincolo di chiave esterna
- 8. La stessa colonna può avere la chiave primaria e il vincolo di chiave esterna in un'altra colonna
- 9. Laravel Eloquent troncato - Vincolo chiave esterna
- 10. Disabilita il vincolo di chiave esterna su una tabella?
- 11. Perché il "vincolo di chiave esterna non riesce" quando la chiave esterna esiste?
- 12. SQL Aggiungi chiave esterna alla colonna esistente
- 13. Come eliminare un record con un vincolo di chiave esterna?
- 14. Eliminazione di tabelle chiave esterne su phpmyadmin? impossibile eliminare l'indice: necessario nel vincolo di chiave esterna
- 15. Come aggiungere una nuova colonna con vincolo di chiave esterna in una singola istruzione in oracle
- 16. Elimina chiave esterna senza conoscere il nome del vincolo?
- 17. Come aggiornare il valore della chiave esterna nel database mysql
- 18. Forza goccia mysql bypassando vincolo di chiave esterna
- 19. È possibile impostare un vincolo univoco come chiave esterna in un'altra tabella?
- 20. Aggiungi nuova colonna con vincolo di chiave esterna in un comando
- 21. laravel 4 Migrazione - Impossibile aggiungere vincolo di chiave esterna
- 22. Mappatura di una chiave primaria come chiave esterna nel database
- 23. errore: 1215. Impossibile aggiungere vincolo di chiave esterna (chiavi esterne)
- 24. ERRORE: Errore 1215: Impossibile aggiungere vincolo di chiave esterna
- 25. Come modificare la colonna di aggiunta della tabella con il vincolo predefinito denominato e il vincolo di chiave esterna con nome?
- 26. vincolo di chiave esterna ON DELETE CASCADE non funziona nel database SQLite su Android
- 27. Qual è l'impostazione del vincolo nullable predefinita per una colonna liquibase?
- 28. Aggiunta di un vincolo univoco composito in Liquibase
- 29. Imposta il valore massimo della colonna come valore iniziale della sequenza con i tag liquibase
- 30. Fluent Nhibernate 1.0 - Specifica il nome del vincolo di chiave esterna tra classe e sottoclasse unita
Qualsiasi idea di come fare questo in YAML? Ho paura che la documentazione di Liquibase mi lasci sempre volere, perso o entrambi. – MikeB
Qualche idea su dove la sintassi 'references =" impiegato (id) "' è documentata? 'references' è definito come [" Foreign key definition "] (http://www.liquibase.org/documentation/column.html) ma google indirizza la maggior parte delle query a' addForeignKeyConstraint', che non è il modo migliore per andare quando stai creando una tabella o aggiungendo colonne e hai già i tag ''. –
Lambart
L'utilizzo della sintassi sopra non ha funzionato per me, ha generato il seguente 'REFERENCES null (null))'. Invece di 'references =" employee (id) "' Ho dovuto usare 'referencedTableName =" employee "referencedColumnNames =" id "' – caspian