HSQLDB与唯一约束

HSQLDB与唯一约束,sql,hsqldb,unique-constraint,Sql,Hsqldb,Unique Constraint,经过多次研究,我没有发现如何处理HSQLDB的唯一空列约束 这个问题与以下方面直接相关: . 相关答案(变通方法)适用于PostgreSQL(create unique index…where conditions),但不适用于HSQLDB(在我看来) 理想情况下,我希望为PostgreSQL和HSQLDB使用相同的“create_ddl”脚本来管理空列的唯一约束行为 任何帮助、想法或解决方法都将不胜感激。HSQLDB有一个设置,只允许在唯一约束的一列中有一行为null。您可以使用此语句更改默

经过多次研究,我没有发现如何处理HSQLDB的唯一空列约束

这个问题与以下方面直接相关: .

相关答案(变通方法)适用于PostgreSQL(
create unique index…where conditions
),但不适用于HSQLDB(在我看来)

理想情况下,我希望为PostgreSQLHSQLDB使用相同的“create_ddl”脚本来管理空列的唯一约束行为


任何帮助、想法或解决方法都将不胜感激。

HSQLDB有一个设置,只允许在唯一约束的一列中有一行为null。您可以使用此语句更改默认设置一次

SET DATABASE SQL UNIQUE NULLS FALSE

只需在这三列上创建一个唯一的约束。null被视为一个不同的值,即使其中一行为null,也不允许两行在三列中具有相同的值。

非常感谢,fredt!这完全符合我的需要。顺便说一句,我想创建一个唯一的约束,其条件不是null值(例如“where=true”)。如何使用HSQLDB成功?我必须为此提出一个新问题吗?我不知道你的意思。如果在两行中,约束列中有(3,true)和(3,true),则它们不是不同的,不能同时插入。写下你希望与众不同的价值观的例子。谢谢你的回答。我想多次插入行(3,false),但我只想插入一次,行(3,true)。在PostgreSql中,我这样定义了这种行为:在表A(列ID,默认使用)上创建唯一索引pmd_UNIQUE_def_wlt_idx,其中默认使用=true;您可以定义生成的列并在该列上创建约束
COL\u ID INT generated asways(默认情况下使用,则column\u ID ELSE NULL)
,但它依赖于默认的唯一NULL真实行为。