HSQLDB UNIQUE约束和SQL数组类型

时间:2013-03-20 01:32:53

标签: sql types hsqldb ddl unique-constraint

我正在使用HSQLDB 2.2.9进行开发。 HSQLDB是支持SQL Array类型的RDBMS之一,我想使用此功能来解决我的数据库中的某些功能。

我在开发数据库时一直在运行一些命令行查询,但是我不确定HSQLDB在为VARCHAR(24)ARRAY []类型的列声明时如何处理UNIQUE约束。我正在使用的DDL如下:

CREATE CACHED TABLE Clients ( 
    cli_id       INTEGER              GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    mrn          VARCHAR(24) ARRAY    DEFAULT ARRAY[] NOT NULL UNIQUE,
    lastname     VARCHAR(48)          NOT NULL,
    firstname    VARCHAR(24)          NOT NULL,
    dob          INTEGER              DEFAULT 0 NOT NULL
);

mrn列包含每个客户端唯一的标识符。在我开发这个数据库的过程中,我了解到客户端可能有一个或多个mrn。该问题的一个解决方案是使用mrn列为每个客户端存储mrn的数组。

在这种情况下UNIQUE的语义是什么? HSQLDB是否断言数组中的每个元素都满足UNIQUE列约束?

这个答案Can PostgreSQL have a uniqueness constraint on array elements?表明Postgres 9.1无法对SQL Array类型元素强制执行UNIQUE列约束。我想知道HSQLDB是否也是这种情况。

1 个答案:

答案 0 :(得分:1)

HSQLDB支持对数组的UNIQUE约束。对数组列的唯一约束导致比较存储在不同行中的整个数组,以确保它们是不同的。

当两个数组在每个索引处具有相等的元素并且数组的长度相同时,它们被认为是相等的。

对于您的应用程序,您必须确保该数组不包含空值,并且其元素已排序。