我如何修复 oracle sql 开发人员中的 "create" 错误?

how could i fix "create" error in oracle sql developer?

当我开始编译脚本时,出现这个错误。我是 Oracle SQL 的新手,所以 - 你能帮帮我吗?

CREATE TABLE EMPLOYEES
(
    ID number(10) NOT NULL,
    SALARY number(10) NOT NULL,
    ADRESS varchar2(60),
    SEX varchar2(60),
    PHONE_NUMBER varchar2(10),
    EMAIL varchar2(40),
    EMPLOYEE_NAME varchar2(12 CHAR) NOT NULL,
    SURNAME varchar2(20 CHAR) NOT NULL,
    FATHER_NAME varchar2(20 CHAR) NOT NULL,
    ID_DUTY number (15) NOT NULL
);

CREATE TABLE CLIENTS
(
    ID number(10) NOT NULL,
    CLIENT_NAME varchar2(12) NOT NULL,
    SURNAME number(20) NOT NULL,
    FATHER_NAME number(20) NOT NULL,
    PHONE_NUMBER char(10) ,
    ADRESS varchar(60)
);

错误截图:

你读过甲骨文是如何回应的吗?它说

ORA-00955: name is already used by an existing object

这是什么意思?通常,这意味着名称为 employees 的 table 已经存在,您不能使用相同的名称创建另一个对象 - employees。该怎么办?您有两个选择:

  • 删除现有对象
  • 重命名新对象

但是,这不一定是已经存在的 table - 可以是任何其他对象,但使用相同的名称。例如,您可能有一个名为 employees 的视图,或者一个过程、一个触发器……任何对象。为了找出它是什么,查询 user_objects.


这就是您现在拥有的 - 您无法创建 table:

SQL> CREATE TABLE employees(
  2    id             NUMBER(10)NOT NULL,
  3    salary         NUMBER(10)NOT NULL,
  4    adress         VARCHAR2(60),
  5    sex            VARCHAR2(60),
  6    phone_number   VARCHAR2(10),
  7    email          VARCHAR2(40),
  8    employee_name  VARCHAR2(12 CHAR)NOT NULL,
  9    surname        VARCHAR2(20 CHAR)NOT NULL,
 10    father_name    VARCHAR2(20 CHAR)NOT NULL,
 11    id_duty        NUMBER(15)NOT NULL
 12  );
CREATE TABLE employees(
             *
ERROR at line 1:
ORA-00955: name is already used by an existing object

我已经拥有哪个对象(名称为 employees)?

SQL> select object_type from user_objects where object_name = 'EMPLOYEES';

OBJECT_TYPE
-------------------
TABLE

啊哈,table。它看起来怎么样?

SQL> desc employees
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER

只有一栏?那东西愚蠢,可能是我忘记丢掉了。它包含任何行吗?

SQL> select * from employees;

no rows selected

不,它是空的。好的,让我们放下它并创建我的全新 employees table:

SQL> drop table employees;

Table dropped.

SQL> CREATE TABLE employees(
  2    id             NUMBER(10)NOT NULL,
  3    salary         NUMBER(10)NOT NULL,
  4    adress         VARCHAR2(60),
  5    sex            VARCHAR2(60),
  6    phone_number   VARCHAR2(10),
  7    email          VARCHAR2(40),
  8    employee_name  VARCHAR2(12 CHAR)NOT NULL,
  9    surname        VARCHAR2(20 CHAR)NOT NULL,
 10    father_name    VARCHAR2(20 CHAR)NOT NULL,
 11    id_duty        NUMBER(15)NOT NULL
 12  );

Table created.

SQL>

好多了。