Postgresql postgres中是否有唯一的枚举数组类型?
假设一周中有一个枚举Postgresql postgres中是否有唯一的枚举数组类型?,postgresql,Postgresql,假设一周中有一个枚举days\u,其值从'Sunday'到'Saturday' 现在,假设我们有一个表,其中列为公司名称和天,其中天是一个数组,表示公司活动的天数 在这种情况下,我们希望数组的值与枚举兼容,并且数组中的值是唯一的(例如,一个值中不允许有两个星期一) 是否有任何数据类型可以处理所有这些问题并具有优化查找查询的好处?以下内容可能不是您想要的,但我认为没有办法在数组上添加唯一约束。反正我也不喜欢用它们 CREATE TYPE days_of_the_week as enum (
days\u,其值从'Sunday'到'Saturday'
现在,假设我们有一个表,其中列为公司名称
和天
,其中天是一个数组,表示公司活动的天数
在这种情况下,我们希望数组的值与枚举兼容,并且数组中的值是唯一的(例如,一个值中不允许有两个星期一)
是否有任何数据类型可以处理所有这些问题并具有优化查找查询的好处?以下内容可能不是您想要的,但我认为没有办法在数组上添加唯一约束。反正我也不喜欢用它们
CREATE TYPE days_of_the_week as enum (
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);
CREATE TABLE company (
id SERIAL PRIMARY KEY NOT NULL,
company_name CHARACTER VARYING(1024) NOT NULL
);
CREATE TABLE company_active (
id_company integer NOT NULL REFERENCES company(id) ON DELETE CASCADE,
days days_of_the_week NOT NULL
);
ALTER TABLE company_active
ADD CONSTRAINT company_active_unique UNIQUE (id_company, days);
INSERT INTO company (company_name) VALUES ('test');
INSERT INTO company_active (id_company, days)
SELECT id, 'Monday'::days_of_the_week
FROM company;
INSERT INTO company_active (id_company, days)
SELECT id, 'Tuesday'::days_of_the_week
FROM company;
您需要编写一个函数来检查数组中的重复项,然后在check
约束中使用该函数。但在进行适当的关系设计时,枚举和数组几乎是反模式的。如果您正确地规范化它,您可以使用唯一的索引轻松地获得它