Giả sử tôi có một lớp đại diện cho vị trí. Vị trí "thuộc về" đối với khách hàng. Các vị trí được xác định bằng mã ký tự 10 unicode. "Mã vị trí" phải là duy nhất trong số các vị trí cho một khách hàng cụ thể.sqlalchemy duy nhất trên nhiều cột
The two below fields in combination should be unique
customer_id = Column(Integer,ForeignKey('customers.customer_id')
location_code = Column(Unicode(10))
Vì vậy, nếu tôi có hai khách hàng, khách hàng "123" và khách hàng "456". Cả hai đều có thể có một vị trí được gọi là "chính" nhưng không thể có hai vị trí được gọi là chính.
Tôi có thể xử lý điều này trong logic nghiệp vụ nhưng tôi muốn đảm bảo không có cách nào để dễ dàng thêm yêu cầu vào sqlalchemy. Tùy chọn unique = True dường như chỉ hoạt động khi được áp dụng cho một trường cụ thể và nó sẽ làm cho toàn bộ bảng chỉ có một mã duy nhất cho tất cả các vị trí.
tôi phải đối mặt với cùng một vấn đề cũng có, nhưng sử dụng UniqueConstraint không giúp tôi. Sau khi tôi thử với Index ('...') thì tôi có một ràng buộc duy nhất. Có bất kỳ lời giải thích nào về hành vi này không? – swdev
@swdev: bạn sử dụng RDBMS nào? – van
Tôi đang sử dụng PostgreSQL. Có vấn đề gì với điều này không? – swdev