Tôi làm cách nào để định cấu hình khóa ngoài thông qua các thuộc tính thẻ cột foreignKeyName
và references
? Ví dụ duy nhất tôi đã tìm thấy minh họa how to add foreign keys after the fact.Liquibase: Làm thế nào để đặt khóa ngoại khóa (s) Hạn chế trong thẻ cột?
25
A
Trả lời
32
Sử dụng thẻ lồng nhau <constraints>
trong thẻ cột của bạn.
Ví dụ:
<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
Có lẽ bạn có thể thêm chìa khóa nước ngoài như sau:
<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>
Các vấn đề liên quan
- 1. cassandra cột khóa chính không thể bị hạn chế
- 2. Liquibase: Làm thế nào để thả ràng buộc duy nhất không có tên hạn chế?
- 3. NHibernate - Tên Hạn chế khóa chính?
- 4. Thực thi một hạn chế nước ngoài chìa khóa để cột của cùng một bảng
- 5. Quy ước đặt tên khóa hạn chế chính của NHibernate
- 6. Làm cách nào để thả khóa ngoại trong SQL Server?
- 7. lỗi sử dụng hạn chế từ khóa
- 8. chìa khóa ngoại tham khảo 2 cột khóa chính trong SQL Server
- 9. Làm thế nào để đặt khóa chính và khóa ngoài trong dữ liệu lõi?
- 10. Các cột trong bảng có khóa ngoại là null không?
- 11. PostgreSQL: giá trị NULL trong cột khóa ngoại
- 12. Redis hết hạn khóa như thế nào?
- 13. làm thế nào để chèn thẻ html bên trong sql trong di chuyển Liquibase?
- 14. Thêm cột khóa chính trong bảng SQL
- 15. Cách xử lý khóa ngoại trong FactoryGirl
- 16. Đường dẫn khóa không hợp lệ trong IndexedDB: hạn chế?
- 17. là từ khóa bị hạn chế "unix" trong C?
- 18. Làm thế nào để bỏ qua thẻ từ khóa CVS trong eclipse diff
- 19. Hạn chế liệt kê WSDL với cặp khóa/giá trị
- 20. giới hạn từ khóa riêng biệt thành một cột
- 21. Làm thế nào để bạn làm việc xung quanh các hạn chế về khóa/giá trị của memcached?
- 22. Đặt cột làm khóa chính nếu bảng không có khóa chính
- 23. Sử dụng khóa chính hỗn hợp làm khóa ngoại
- 24. Làm thế nào để tạo ra một khóa ngoại với "ON UPDATE CASCADE" trên Oracle?
- 25. Nhiều khóa ngoại?
- 26. Tìm thông tin cột hạn chế khóa ngoài giữa các bảng
- 27. Làm cách nào để khóa ngoại quốc vào bảng?
- 28. TSQL khóa ngoại trên lượt xem?
- 29. Làm cách nào để đặt khóa chính trong MongoDB?
- 30. Làm thế nào để thay thế/tên khóa trong một khóa Javascript: bản đồ giá trị?
Bất kỳ ý tưởng làm thế nào để làm điều này trong YAML? Tôi sợ tài liệu Liquibase luôn để lại cho tôi mong muốn, mất mát, hoặc cả hai. – MikeB
Bất kỳ ý tưởng nào trong đó cú pháp 'references =" employee (id) "' được ghi lại? 'references' được định nghĩa là [" Foreign key definition "] (http://www.liquibase.org/documentation/column.html) nhưng google dẫn hầu hết các truy vấn tới' addForeignKeyConstraint', đây không phải là cách tốt nhất để đi khi bạn đang tạo một bảng hoặc thêm các cột và đã có các thẻ ''. –
Lambart
Sử dụng cú pháp trên không hiệu quả đối với tôi, nó tạo ra các 'tham chiếu null (null)) sau đây'. Thay vì 'references =" employee (id) "' Tôi đã phải sử dụng 'referencedTableName =" employee "referencedColumnNames =" id "' – caspian