如何对一个表的引用进行唯一约束?

问题描述

我正在制作几个表,这些表将存储有关员工工作的数据。

CREATE TABLE job_group (
   job_group_id SERIAL PRIMARY KEY,job_group  varchar(100)
);
INSERT INTO job_group (job_group) VALUES ('first'),('second');

CREATE TABLE job_type (
    job_type_id SERIAL PRIMARY KEY,job_group_id INT REFERENCES job_group(job_group_id) NOT NULL,job_type varchar(100)
);


INSERT INTO job_type (job_type,job_group_id) 
VALUES ('office',1),('output',2),('outdoor',('work hard',('vacation',('plan',null),('burn Rome',1);

CREATE TABLE worker (
    worker_id SERIAL PRIMARY KEY,worker varchar(100)
);
INSERT INTO worker VALUES ('Alice','Bob','Caligula');

CREATE TABLE job (
    job_id SERIAL PRIMARY KEY,job_data date,worker_id INT REFERENCES worker(worker_id) NOT NULL,job_type_id INT REFERENCES job_type(job_type_id) NOT NULL,amount INT,UNIQUE (worker_id,job_data,job_type)
);

如何进行限制,以使得不可能在同一天和同一名工人的不同组中插入活动类型(job_type),例如休假和上班?


INSERT INTO job (job_data,worker_id,job_type_id,amount)
VALUES ('2020-11-08',1,4);
INSERT INTO job (job_data,3,4);
--Its correct - job_group_id = 1


INSERT INTO job (job_data,amount)
VALUES ('2020-11-07',6,null);
INSERT INTO job (job_data,4,8); --Its correct - job_group_id is null
INSERT INTO job (job_data,7,1); --Its correct - job_group_id = 1

INSERT INTO job (job_data,amount)
VALUES ('2020-11-09',2,8);
INSERT INTO job (job_data,5,null); --ERROR - job_group_id = 2 



解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)