首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置Doctrine唯一行依赖于两列和它们的值?

如何设置Doctrine唯一行依赖于两列和它们的值?
EN

Stack Overflow用户
提问于 2020-11-27 06:10:48
回答 1查看 22关注 0票数 0

我有一个表,其中还包含已删除的值和当前值,依赖于名为ghost的列。Ghost 1表示该行被删除,0表示该行是持久的。

代码语言:javascript
复制
id | name | ghost
1  | nam1 | 1
2  | nam1 | 1
3  | nam1 | 0

我如何才能用理论来描述它,省略那些具有ghost =1的行进行唯一检查,而只检查那些具有ghost = 0的行?仅当ghost值为0时,名称才应是唯一的,否则应省略标记为ghost =1的行,因为已删除。

EN

回答 1

Stack Overflow用户

发布于 2020-11-28 17:46:27

该问题没有提供任何有关使用哪种数据库系统的信息。这可能会有一些帮助。

但是,不管底层数据库是什么,最简单的方法可能是在字段nameghost上设置一个组合的唯一约束。

作为教义注解:

代码语言:javascript
复制
/**
 * @Entity
 * @Table(name="tablename",uniqueConstraints={@UniqueConstraint(name="unique_name_ghost", columns={"name", "ghost"})})
 */
class YourEntity
{
}

或者在sql中:

代码语言:javascript
复制
ALTER TABLE your_table
ADD CONSTRAINT unique_name_ghost UNIQUE (name, ghost);

然而,这有一个额外的隐含,即ghost = 1name的组合在该表中也只能存在一次。您的问题没有清楚地说明是否需要具有多个具有相同名称的软删除行。

顺便说一句,软删除还有一个原则扩展:https://github.com/Atlantic18/DoctrineExtensions/blob/v2.4.x/doc/softdeleteable.md。您可能希望考虑使用该扩展名,而不是手动执行软删除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65029811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档