![](/img/trans.png)
[英]Not able to create foreign key “There are no primary or candidate keys in the referenced table”
[英]Create a table with primary key and 2 foreign keys
创建 WPC 分配表。 注意:有一个复合主键和 2 个外键,需要 3 个约束。 见下图 2-44 取自教科书。 另外,请记住,同一架构中的两个约束不能具有相同的名称。 以下是部分 DDL 供您完成:
CREATE TABLE ASSIGNMENT
(
EmployeeNumber INTEGER NOT NULL,
ProjectID INTEGER NOT NULL,
Hoursworked NUMBER (6,2),
CONSTRAINT PK_Assignment
PRIMARY KEY (EmployeeNumber, ProjectID),
CONSTRAINT FK_Assignment_EMPLOYEE
FOREIGN KEY (EmployeeNumber) REFERENCES EMPLOYEE,…
(请自行填写本声明的其余部分)
我收到一个错误:
从第 1 行开始的错误命令:
CREATE TABLE ASSIGNMENT
(
EmployeeNumber INTEGER NOT NULL,
ProjectID INTEGER NOT NULL,
Hoursworked NUMBER (6,2),
CONSTRAINT PK_Assignment
PRIMARY KEY (EmployeeNumber, ProjectID),
CONSTRAINT FK_Assignment_EMPLOYEE
FOREIGN KEY (EmployeeNumber),
CONSTRAINT FK_Project_Assignment
FOREIGN KEY (ProjectID) REFERENCES EMPLOYEE.employeenumber(EmployeeNumber), PROJECT.projectID(ProjectId)
)
错误报告:
ORA-00905: 缺少关键字
00905. 00000 - “缺少关键字”
*原因:
*行动:
我找不到我缺少的东西..有人可以帮忙吗?
您选择创建轮廓约束(这完全可以,只要您遵循语法)。 仅提及另一个选项,也许您会发现它们很有用。
请注意,不必将构成主键的列明确声明为not null
因为主键约束无论如何都不会接受空值。
大纲约束(它们遵循列的定义):
SQL> create table assignment
2 ( employeenumber integer,
3 projectid integer,
4 hoursworked number (6,2),
5 constraint pk_assignment
6 primary key (employeenumber, projectid),
7 constraint fk_assignment_employee
8 foreign key (employeenumber) references employee (employeenumber),
9 constraint fk_project_assignment
10 foreign key (projectid) references project (projectid)
11 );
Table created.
内联约束,与列在同一行; 由于有一个复合主键(由两列或多列组成),它不能是内联的:
SQL> create table assignment
2 ( employeenumber integer constraint fk_assignment_employee
3 references employee (employeenumber),
4 projectid integer constraint fk_project_assignment
5 references project (projectid),
6 hoursworked number (6,2),
7 constraint pk_assignment
8 primary key (employeenumber, projectid)
9 );
Table created.
表是单独创建的,约束是使用ALTER TABLE
命令创建的:
SQL> create table assignment
2 ( employeenumber integer,
3 projectid integer,
4 hoursworked number (6,2)
5 );
Table created.
SQL> alter table assignment add constraint pk_assingment primary key (employeenumber, projectid);
Table altered.
SQL> alter table assignment add constraint fk_assignment_employee
2 foreign key (employeenumber) references employee (employeenumber);
Table altered.
SQL> alter table assignment add constraint fk_project_assignment
2 foreign key (projectid) references project (projectid);
Table altered.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.