Postgresql 布尔列上的sqlalchemy约束,允许对具有相同外键的多行使用单个true
我有下表Postgresql 布尔列上的sqlalchemy约束,允许对具有相同外键的多行使用单个true,postgresql,sqlalchemy,flask-sqlalchemy,Postgresql,Sqlalchemy,Flask Sqlalchemy,我有下表 id |属性| id |照片| url |是最好的 ----|-------------|-----------|--------- 1 | 1 |测试1 |正确 2 | 1 |测试2 |错误 3 | 1 |测试3 |错误 4 | 2 | mest1 |正确 5 | 2 | mest2 |错误 6 | 3 | jest1 |错误 其中属性_id是外键。 我需要一个约束来限制具有相同属性id的行上is_best列的多个真值 例如,对于id=2或id=3或其中id=5,限制更新是_be
id |属性| id |照片| url |是最好的
----|-------------|-----------|---------
1 | 1 |测试1 |正确
2 | 1 |测试2 |错误
3 | 1 |测试3 |错误
4 | 2 | mest1 |正确
5 | 2 | mest2 |错误
6 | 3 | jest1 |错误
其中属性_id是外键。
我需要一个约束来限制具有相同属性id的行上is_best列的多个真值
例如,对于id=2或id=3或其中id=5,限制更新是_best=True
理想情况下,我需要sqlalchemy中的此功能。但postgres代码也很好
我正在用sqlalchemy创建表格,如下所示:
class PropertyPhoto(db.Model):
id = db.Column(db.Integer, primary_key=True)
property_id = db.Column(db.Integer,
db.ForeignKey('property.id'),
nullable=False,
onupdate='CASCADE',
ondelete='CASCADE')
photo_url = db.Column(db.String, nullable=False, unique=True)
is_best = db.Column(db.Boolean, default=False)
在Postgres中,您可以使用过滤后的唯一索引执行此操作:
create unique index on the_table (property_id)
where is_best;
在Postgres中,您可以使用过滤后的唯一索引执行此操作:
create unique index on the_table (property_id)
where is_best;