当前位置: 首页 > 知识库问答 >
问题:

具有布尔值[duplicate]的复合唯一约束

魏臻
2023-03-14

我有一个结构如下的表,

tests
---------------------------
schoolId  | name  | isDeleted

如果学校处于活动状态,即< code>isDeleted = false

我不确定如何为只取一个值的字段设置唯一约束。布尔字段isDeleted=false

共有2个答案

笪欣嘉
2023-03-14

您应该更改索引的查询,如下面的查询:

create unique index tests_unique_name_schoolId_notDeleted
    on tests (name) where isDeleted = false;

nameisDeletedcolumns应该混合在一起,并将放在一起,其中isdeletd=false,表示当is deleted时只有一行是唯一的,而namecolumn是相同的。另一方面,您可以存储太多的记录,其中<code>isDeleted=true

演示

祖奇
2023-03-14

我可以做下面这样的事情,

create unique index tests_unique_name_schoolId_notDeleted
    on tests (name, schoolId) where isDeleted = false
 类似资料:
  • 我对Postgres Unique约束有问题,该约束包含多个可能包含空值的列。 让我们假设这种情况: Insert将插入('foo',bar')一次和('foo',NULL)两次(尽管直觉告诉它应该插入一次)。 在这种情况下,解决方案非常简单。我可以添加唯一的索引 但是当有更多的列和不同的类型(不仅仅是文本)时,问题就开始了。假设我们有10列,其中9列可以有值。也许我可以用大量的限制来解决它,但这

  • 问题内容: 我想在MySQL表中添加一列,命名为。在此列中,只有一个记录可以设置为。 如何使用mysql将这个约束添加到我的列中? 谢谢! 更新 如果不是一个限制,我应该添加。我们如何处理数据库上的此类问题? 问题答案: 我认为这不是对单个默认值的情况进行建模的最佳方法。 取而代之的是,我将IsDefault列留在外面,并创建一个单独的表,该表只有一行,并且只有构成主表主键的列。在此表中,放置标识

  • 当并发客户机试图将数据插入子表时,我们面临唯一的约束冲突问题。 假设我们有1以下的表格。用户user_id、first_name、last_name。2.项目project_idproject_name和project_description。 两者都有着多对多的关系。 当两个客户端试图创建一个新用户时。假设client1创建了user1(id=aa1),子记录项目(id=1)。Client2还创

  • 这是我的stacktrace: 学生表: 学生实体:学生标识默认为自动递增 postgres控制台(这些学生由sql脚本创建): 在此处输入图像描述 我也尝试过这样生成,但这没有帮助 我用postgreql它似乎我有问题与id Generator,谢谢你的想法和答案

  • 我有这样布局的模型: 这里的场景是我永远不希望用户删除数据。相反,删除只会隐藏记录。但是,我仍然希望所有非软删除的记录都遵循唯一的键约束。基本上,我希望有尽可能多的重复的已删除记录,但只有一个唯一的未删除记录可以存在。所以我本来想包括“已删除”字段(由django安全删除库提供),但问题是Django的唯一检查因“psycopg2”而失败。完整性错误:重复的键值违反了 ['field2', 'fi

  • 我在创建应用程序时遇到了这个问题。因此,每当我添加第一条评论时,问题都不会出现,但当我第二次尝试时,我会收到此错误: 重复的键值违反了唯一约束“tripplanner_discussion_author_id_key”详细信息:键 (author_id)=(1) 已存在。 我试图把放到 models.py,但它根本没有帮助。 models.py views.py 更新 当我登录到另一个用户时,一个