gpt4 book ai didi

python - 在 `CheckConstraint` 中创建一个 `UniqueConstraint`

转载 作者:行者123 更新时间:2023-11-28 16:32:15 25 4
gpt4 key购买 nike

在创建新记录之前,我想检查 native_linux_user 组合的条件和 is_active是独一无二的,但是 is_active必须是 True .多个 native_linux_useris_active=False可能存在,但只有一个 native_linux_useris_active=True可以存在。

我尝试使用 CheckConstraintUniqueConstraint 内像这样,但是没有用。如何进行此类约束?

 __table_args__ = (
UniqueConstraint(
'native_linux_user',
CheckConstraint('is_active=True', name='active_check'),
name='_username_uniqueness'
),
)

最佳答案

从 SQL 端你可以创建部分 UNIQUE 索引:

CREATE UNIQUE INDEX idx_unique_native_linux_user_is_active
ON table (native_linux_user) WHERE is_active=True;

以及具有相应索引的SQLAlchemy模型:

class Foo(Model):
id = Column(Integer, primary_key=True)
native_linux_user = Column(String, nullable=False)
is_active = Column(Boolean)

__table_args__ = (
Index('idx_unique_native_linux_user_is_active', native_linux_user,
unique=True,
postgresql_where=(is_active==True),
),
)

关于python - 在 `CheckConstraint` 中创建一个 `UniqueConstraint`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30753551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com