Sql 一张桌子';s复合主键是否用作另一个表上复合主键的一部分?
我创建了三个表。表1的唯一键与表2的唯一键一起用作表2的复合主键。我尝试在表3的复合键中使用表2的复合键部分。但是我做不到?有人能告诉我是谁吗Sql 一张桌子';s复合主键是否用作另一个表上复合主键的一部分?,sql,oracle,Sql,Oracle,我创建了三个表。表1的唯一键与表2的唯一键一起用作表2的复合主键。我尝试在表3的复合键中使用表2的复合键部分。但是我做不到?有人能告诉我是谁吗 table 1: create table emp1( associate_id number(5) not null, associate_name varchar2(25), salary decimal(10,2), doj date, grade varchar2(6), constrain
table 1:
create table emp1(
associate_id number(5) not null,
associate_name varchar2(25),
salary decimal(10,2),
doj date,
grade varchar2(6),
constraint emp1_cons unique(associate_id)
);
table 2:
create table project(
associate_id number references emp1(associate_id) not null,
pm_id number(5),
project_id varchar2(10) unique,
project_name varchar2(20),
project_desc varchar2(20),
status varchar2(20),
grade varchar2(6),
primary key(associate_id,project_id)
);
table 3:
create table department(
dept_id varchar2(5),
project_id varchar2 references project(project_id),
dept_name varchar2(10),
dept_code number(5),
proj_startdate date,
proj_enddate date,
primary key(dept_id,project_id)
);
执行的时候说左偏执缺失
如何使用另一个表复合主键的部分创建复合主键?您的模式设计似乎有点缺陷。你想做什么样的约束 我不明白你为什么用复合键
create table emp1(
associate_id number(5) not null, -- PK
associate_name varchar2(25),
salary decimal(10,2),
doj date,
grade varchar2(6),
primary key(associate_id)
);
create table project(
project_id varchar2(10), -- PK
associate_id number references emp1(associate_id) not null,
pm_id number(5),
project_name varchar2(20),
project_desc varchar2(20),
status varchar2(20),
grade varchar2(6),
primary key(project_id)
);
create table department(
dept_id varchar2(5), -- PK
project_id varchar2 references project(project_id),
dept_name varchar2(10),
dept_code number(5),
proj_startdate date,
proj_enddate date,
primary key(dept_id)
);
如果您使用的是Oracle(可以这么说!),那么您忘记了指定department.project\u id的大小