HSQLDB 和唯一约束
Posted
技术标签:
【中文标题】HSQLDB 和唯一约束【英文标题】:HSQLDB and unique constraint 【发布时间】:2017-12-21 07:27:55 【问题描述】:经过多次研究,我没有找到如何处理 HSQLDB 的 具有空列的唯一约束。
此问题与以下内容直接相关: Create unique constraint with null columns。
相关答案(解决方法)适用于 PostgreSQL (create unique index ... where conditions
),但不适用于 HSQLDB(从我的角度来看)。
理想情况下,我希望 PostgreSQL 和 HSQLDB 使用相同的“create_ddl”脚本来管理具有空列的唯一约束行为
我们将不胜感激任何帮助、想法或解决方法。
【问题讨论】:
【参考方案1】:HSQLDB 有一个设置,允许在 UNIQUE 约束的一列中只允许一行为空。您可以使用此语句更改默认设置一次。
SET DATABASE SQL UNIQUE NULLS FALSE
您只需在三列上创建一个 UNIQUE 约束。 null 被视为一个不同的值,它不允许两行在三列中具有相同的值,即使其中之一为 null。
【讨论】:
非常感谢,弗雷特!这完全符合我的需要。顺便说一句,我想创建一个条件不是空值的唯一约束(例如,'whereCOL_ID INT GENERATED ALWAYS AS (CASE WHEN DEFAULT_USE THEN COLUMN_ID ELSE NULL)
,但它依赖于默认的 UNIQUE NULLS TRUE 行为。以上是关于HSQLDB 和唯一约束的主要内容,如果未能解决你的问题,请参考以下文章
唯一约束 (indexExists) 的 Liquibase 前提条件不适用于 HSQLDB 数据库?
HSQLDB:奇怪的“唯一约束或索引违规”,从 CSV 读取数据