【发布时间】:2021-09-30 02:34:38
【问题描述】:
我有一个用于存储徽标图像的数据库。可以有几种不同类型的徽标图像。还有多个系统将这些徽标相互隔离。
规则是每个系统中的每个类型只能有一个active标志。
我正在尝试对此进行限制。这是我现在拥有的:
alter table logo_t
add constraint logo_active_uk
unique (
SystemId,
LogoType,
Active
) using index tablespace t_indexes;
这很接近,但问题是它只允许一个徽标在任何时候不活动。所以基本上,我需要忽略约束中的任何非活动徽标(active = 'No')。
这似乎应该是可能的,但我不确定如何解决这个问题。
【问题讨论】:
-
在 SQL Server 中,我会使用过滤的唯一索引。 stackoverflow.com/q/5939776/121544 是关于 Oracle 的 SO 问题,相当于过滤索引。也许你可以适应过滤后的独特。