sql中的标识符无效

时间:2017-10-20 00:35:42

标签: sql oracle

我使用自联接编写了查询,因为EmployeeID应该同时是primary keyforeign 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;

1 个答案:

答案 0 :(得分:4)

您的插入查询中存在一些小问题。

  1. 你将EmployeeID声明为varchar2,但你没有用''封闭ID值,所以你基本上试图插入数学运算107-55-789的结果,这意味着-737。

  2. 您没有在insert语句中指定字段名称,因此您必须提供每个字段的值。您有3个字段,但每个语句中提供2个值。

  3. 因此您可以使用这些插入语句进行测试:

    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小提琴,看看结果:

    Oracle Sql Fiddle