微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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 举报,一经查实,本站将立刻删除。