我正在使用 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 列约束?
这个答案PostgreSQL可以对数组元素有唯一性约束吗?表明 Postgres 9.1 无法对 SQL Array 类型元素强制执行 UNIQUE 列约束。我想知道 HSQLDB 是否也可能是这种情况。