2015-01-28 18 views
7

Tôi đang tạo một bảng liên kết có 3 cột; id, product_id, tournament_id.Thêm ràng buộc duy nhất tổng hợp trong Liquibase

Thêm mộtConstraint duy nhất vào cột "id" là tầm thường, nhưng tôi muốn đảm bảo rằng bất kỳ cặp nào (product_id, tournament_id) là duy nhất.

Ví dụ tại Liquibase.org lãm

<changeSet author="liquibase-docs" id="addUniqueConstraint-example"> 
<addUniqueConstraint catalogName="cat" 
     columnNames="id, name" 
     constraintName="const_name" 
     deferrable="true" 
     disabled="true" 
     initiallyDeferred="true" 
     schemaName="public" 
     tableName="person" 
     tablespace="A String"/> 
</changeSet> 

nhưng là nó có thể thực hiện điều này trong một khối <createTable>?

Ngoài ra, chỉ để xác nhận; điều này có tạo ra ràng buộc duy nhất tổng hợp trên hai cột hay không, tạo ra hai ràng buộc duy nhất riêng biệt?

Trả lời

5

Tôi khá chắc chắn rằng:

  1. Bạn không thể làm điều đó bên trong thẻ createTable chính nó, nhưng bạn thể làm điều đó trong changeset giống như khi bàn là tạo.
  2. không tạo một ràng buộc duy nhất tổng hợp trên hai cột. Một cách bạn có thể kiểm tra là chạy lệnh liquibase bằng lệnh để tạo SQL để cập nhật thay vì chạy lệnh cập nhật và kiểm tra xem nó làm gì cho cơ sở dữ liệu của bạn. Trên dòng lệnh, thay vì chạy liquibase update, bạn sẽ chạy liquibase updateSQL.
0

Bạn có thể đọc liquibase manual vấn đề cũng tương tự bạn có thể tìm here

Trong trường hợp của bạn nên là:

<changeSet author="liquibase-docs" id="addUniqueConstraint-example"> 
<addUniqueConstraint 
     columnNames="id, product_id, tournament_id" 
     constraintName="your_constraint_name" 
     tableName="person" 
     /> 
</changeSet> 
Các vấn đề liên quan