postgresql - postgres 中是否有任何独特的枚举数组类型?
问题描述
假设有一个枚举days_of_the_week
值从“星期日”到“星期六”。
现在,假设我们有一个包含 和 列的表company_name
,days
其中 days 是一个数组,表示公司活跃的天数。
在这种情况下,我们希望数组的值与枚举兼容,并且值在数组中是唯一的(例如,一个值中不允许有两个星期一)。
是否有任何数据类型可以处理所有这些并具有优化查找查询的好处?
解决方案
以下可能不是您正在寻找的内容,但我认为没有办法在数组上添加唯一约束。反正我不喜欢用它们。
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;
推荐阅读
- go - golang反射将结构的第一个值设置为零值
- http - HTTP协议是包含在哪个协议中的呢?
- azure - 读取 Windows VM RAM 内存日志分析查询
- swift - 如何编写一个返回三种类型之一的快速函数?
- excel - 将文件路径列表传递给要从位置 A 复制到位置 B 的批处理文件
- google-cloud-platform - GCP 列出 vm 实例并获取外部 IP
- jquery - 在 BaguetteBox 中的每个图像下方添加按钮
- linux - Linux 容器上的 Kestrel 证书“无此类文件”适用于 Windows 容器
- javascript - 有条件地设置允许的 IsIn 装饰器可能性?
- docker - Zeppelin 无法在 docker 上加载:logErrors docker zeppelin