【问题标题】:ORA-00955 during SQL Table creationSQL 表创建期间的 ORA-00955
【发布时间】:2016-08-21 22:07:09
【问题描述】:

我在创建表的过程中遇到了错误。我知道这意味着表名需要更改,但我没有看到任何具有相同名称的对象。 .lst 的副本如下。

谢谢

SQL> CREATE TABLE CUSTOMERtable
  2   (
  3          CUSTOMERID      INT NOT NULL,
  4          CUSTNAME        VARCHAR2 (50) NOT NULL,
  5          ADDRESS         VARCHAR2 (100) NOT NULL,
  6          PHONENUMBER     VARCHAR2 (10)   NOT NULL,
  7          CONSTRAINT IDS_CUST_PK PRIMARY KEY (CUSTOMERID)
  8   );
CREATE TABLE CUSTOMERtable
             *
ERROR at line 1:
ORA-00955: name is already used by an existing object 


SQL>
SQL> 
SQL> CREATE TABLE RENTALStable
  2  (
  3          RENTALID        INT         NOT NULL,
  4          OUTDATE         DATE    NOT NULL,
  5          INDATE      DATE    NOT NULL,
  6          LATEFEE         INT,
  7          DAMAGEFEE       INT,
  8          REWINDFEE       INT,
  9          ID_CUSTOMER INT,
 10          CONSTRAINT RentalsTable_IDS_PK PRIMARY KEY (RENTALID),
 11          FOREIGN KEY (ID_CUSTOMER) REFERENCES CUSTOMERtable(CUSTOMERID)
 12  );

 Table created.

【问题讨论】:

  • desc CUSTOMERtableselect * from all_objects where object_name = 'CUSTOMERTABLE' 以查看已使用该名称的对象。可能您只想删除现有对象。顺便说一句,我无法想象您为什么要将table 放在每个表的名称中。这似乎不太可能有用。

标签: sql oracle ddl ora-00955


【解决方案1】:

这应该找到造成问题的对象:

select *
  from user_objects
  where object_name = 'CUSTOMERTABLE'

请注意,即使您编写CUSTOMERtable(大写和小写),您的语句也会尝试创建一个名为CUSTOMERTABLE(大写)的表。 如果您想保留两个具有相同名称但大小写不同的对象(这对我来说似乎不是一个好主意),您应该使用双引号:

CREATE TABLE "CUSTOMERtable" ( ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多