【问题标题】:how could i fix "create" error in oracle sql developer?如何修复 oracle sql developer 中的“创建”错误?
【发布时间】:2021-01-10 18:53:27
【问题描述】:

当我开始编译脚本时,出现此错误。我是 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)
);

错误截图:

【问题讨论】:

标签: sql oracle oracle11g


【解决方案1】:

您是否阅读过甲骨文的回应?它说

ORA-00955: 名称已被现有对象使用

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

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

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


这就是你现在所拥有的——你不能创建一个表:

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

我已经拥有了哪个对象(其名称是雇员)?

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

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

啊哈,一张桌子。它看起来怎么样?

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

只有一栏?那是愚蠢的东西,可能我忘了放弃它。它是否包含任何行?

SQL> select * from employees;

no rows selected

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

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>

好多了。

【讨论】:

  • 非常感谢,如果我有更多的声誉,我会喜欢这个答案
猜你喜欢
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多