【发布时间】:2018-09-11 08:04:04
【问题描述】:
基于对sqlalchemy unique across multiple columns 的回答(我使用的是声明性版本,如下所示)我正在尝试声明一个多列唯一性约束。
class Location(Base):
__tablename__ = 'locations'
id = Column(Integer, primary_key = True)
customer_id = Column(Integer, ForeignKey('customers.customer_id'), nullable=False)
location_code = Column(Unicode(10), nullable=False)
__table_args__ = (UniqueConstraint('customer_id', 'location_code', name='_customer_location_uc'),
)
但是,当我使用相同的 customer_id 和 location_code 创建多个项目时,我没有从 SQLAlchemy 获得任何唯一性异常,并且项目已成功创建。
在链接答案下方的 cmets 中,有一段关于将 UniqueConstraint 指定为 DDL 的一部分的部分对话。要强制执行此约束,我需要做的另一部分是什么?
【问题讨论】:
-
该死,我知道这很简单。我的一列可以为空,并且所有空值都是唯一的!投票结束,这对将来的任何人都没有用...
-
其实你的问题很好——其他人可能会觉得它很有用。介意用你的发现来回答吗?
-
评论解释了一切,真的。假定所有空值都是唯一的。
-
是的,但是评论不是答案,但您的评论是您问题的答案,因此您应该将其设为一个。 Stackoverflow 很好,正因为如此。
标签: postgresql sqlalchemy