如何解决如何对一个表的引用进行唯一约束?
我正在制作几个表,这些表将存储有关员工工作的数据。
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 举报,一经查实,本站将立刻删除。