我使用自联接编写了查询,因为EmployeeID
应该同时是primary key
和foreign key
- 这是真的吗?并且sql开发人员向我展示了这是什么意思?
SQL错误:ORA-00904:“E”。“EMPLOYEESUPERVISOR”:标识符无效 00904. 00000 - “%s:无效标识符”
create table Employees
(
EmployeeID varchar2(50) not null primary key,
EmployeeName varchar2(50) unique,
EmployeeSupervisor varchar2(50),
constraint fk_EmployeeID foreign key (EmployeeID) references
Employees(EmployeeID)
);
insert into Employees values (098-23-456,'Sue Miller');
insert into Employees values (107-55-789,'Stan Getz');
insert into Employees values (123-44-347,'Jim Jason');
insert into Employees values (547-33-243,'Bill Blass');
insert into Employees values (678-44-546,'Robert Lewis');
select E.EmployeeID,
E.EmployeeName,
M.EmployeeSupervisor AS Manager
from Employees E,
Employees M
where E.EmployeeSupervisor = M.EmployeeID;
答案 0 :(得分:4)
您的插入查询中存在一些小问题。
你将EmployeeID声明为varchar2,但你没有用''封闭ID值,所以你基本上试图插入数学运算107-55-789的结果,这意味着-737。
您没有在insert语句中指定字段名称,因此您必须提供每个字段的值。您有3个字段,但每个语句中提供2个值。
因此您可以使用这些插入语句进行测试:
insert into Employees values ('107-55-789','Stan Getz', null);
insert into Employees values ('123-44-347','Jim Jason', '123-44-347');
insert into Employees values ('547-33-243','Bill Blass', null);
insert into Employees values ('678-44-546','Robert Lewis', '123-44-347');
看看这个oracle小提琴,看看结果: