问题描述
我正在制作几个表,这些表将存储有关员工工作的数据。
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 (将#修改为@)