创建WPC分配表。注意:有一个复合的PRIMARY KEY和2个FOREIGN KEY,需要3个CONSTRAINT。请参阅下面的图2-44,摘自教科书。另外,请记住,同一架构中的任何2个约束都不能具有相同的名称。这是部分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-“缺少关键字”
*原因:
*动作:
我找不到我想要的东西。有人可以帮忙吗?
答案 0 :(得分:1)
您选择创建 outline 约束(仅在遵循语法的情况下,这完全可以)。仅提及其他选项,也许您会发现它们很有用。
请注意,构成主键的列不必显式声明为not null
,因为主键约束始终不会接受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.