在多个外键上组合唯一键

Posted

技术标签:

【中文标题】在多个外键上组合唯一键【英文标题】:Compose unique key on multiple foreign keys 【发布时间】:2017-02-08 00:21:36 【问题描述】:

鉴于这些 SQLAlchemy 模型:

class Key():
    key_id = Column('id', Integer, primary_key=True, autoincrement=True)
    name = Column(String(255))

class House():
    house_id = Column('id', Integer, primary_key=True, autoincrement=True)
    name = Column(String(255))

class HouseKey():
    house_key_id = Column('id', Integer, primary_key=True, autoincrement=True)
    house_id = Column(Integer, ForeignKey('house.id'))
    key_id = Column(Integer, ForeignKey('key.id'))

    UniqueConstraint('house_id', 'key_id')

    house = relationship('House', foreign_keys=[house_id])
    key = relationship('Key', foreign_keys=[key_id])

house_id, key_id 唯一键未创建。我相信this 是原因(如果我错了,请纠正我)。

如何在也是外键的列上创建复合唯一键?

【问题讨论】:

【参考方案1】:

表级UNIQUE约束进入__table_args__

class HouseKey(Base):
    ...
    __table_args__ = (UniqueConstraint("house_id", "key_id"),)

【讨论】:

以上是关于在多个外键上组合唯一键的主要内容,如果未能解决你的问题,请参考以下文章

外键可以引用组合的唯一键吗?

主键约束是啥和啥组合?

将多个键上的 pandas 数据帧映射为列或 multiIndex

数据库

MySQL常见面试题

MySQL常见面试题