H2数据库:仅对非NULL值的唯一约束? (过滤索引)

Posted

技术标签:

【中文标题】H2数据库:仅对非NULL值的唯一约束? (过滤索引)【英文标题】:H2 database: unique constraint only over non-NULL values? (filtered index) 【发布时间】:2017-04-22 13:30:42 【问题描述】:

SQL Server 2008 apparently has filtered indices。

在 H2 中实现相同目标的最简洁方法是什么?

【问题讨论】:

【参考方案1】:

我相信您可以为此目的使用计算列。 . .假设你有一个唯一的 id。让我假设唯一的 id 是数字的,永远不会是负数。那么:

alter table t add col (case when <condition> then -1 else uniqueid end);

create unique index unq_t_col on t(col);

我相信 H2 支持唯一索引、计算列和计算列上的索引,所以这应该可以工作。

【讨论】:

感谢您的建议。我将测试这种方法。还在想是否有不需要额外表格列的解决方案。

以上是关于H2数据库:仅对非NULL值的唯一约束? (过滤索引)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Hibernate 注释创建允许 NULL 值的唯一约束?

MYSQL中唯一约束和唯一索引的区别

在其中一列中具有多个空值的复合唯一键约束

Oracle数据库中违反唯一约束的处理

熊猫重新索引仅对具有唯一值的索引对象有效

Concat DataFrame Reindexing 仅对具有唯一值的 Index 对象有效