【问题标题】:Changing Oracle table name更改 Oracle 表名
【发布时间】:2012-10-28 20:42:13
【问题描述】:

我正在尝试在 oracle 中更改表名。 我首先运行这个脚本来声明表

CREATE TABLE CUSTOMER
(
  C_ID NUMBER(6,0),
  C_LAST VARCHAR2(25),
  C_FIRST varchar2(25),
  C_MI char(1),
  C_DOB DATE,
  C_ADDRESS varchar2(100),
  C_CITY varchar2(35),
  C_STATE char(2),
  C_ZIP varchar2(10),
  C_DPHONE varchar2(12),
  C_EPHONE varchar2(12),
  C_USERID varchar2(20),
  C_PASSWORD VARCHAR2(30),
  CONSTRAINT CUSTOMER_PK PRIMARY KEY(C_ID)
);

CREATE TABLE ORDER_SOURCE
(
  OS_ID NUMBER(6),
  OS_DESC varchar2(255),
  CONSTRAINT ORDER_SOURCE_PK PRIMARY KEY(OS_ID)
);

CREATE TABLE ORDERS
(
  O_ID NUMBER(6),
  O_DATE DATE,
  O_METHPMT varchar2(25),
  C_ID NUMBER(6),
  OS_ID NUMBER(6),
  CONSTRAINT ORDERS_PK PRIMARY KEY(O_ID),
  CONSTRAINT ORDERS_CUSTOMER_FK FOREIGN KEY(C_ID) REFERENCES CUSTOMER(C_ID),
  CONSTRAINT ORDERS_ORDER_SOURCE_FK FOREIGN KEY(OS_ID) REFERENCES ORDER_SOURCE(OS_ID)
);

它运行正常,然后我尝试运行

alter table ORDERS
rename to ORDER;

我收到此错误:

从命令的第 1 行开始出错:alter table ORDERS rename to ORDER 错误报告:SQL 错误:ORA-00903:无效的表名 00903. 00000 - “无效的表名” *原因:
*行动:

【问题讨论】:

  • ORDER 保留(如order by)尝试rename to "ORDER"(或[ORDER] 我不记得oracle 使用了什么)

标签: sql oracle11g alter-table table-rename


【解决方案1】:
RENAME TABLE table-Name TO new-Table-Name

如果有引用表的视图或外键,尝试重命名它会产生错误。此外,如果表上有任何检查约束或触发器,尝试重命名它也会产生错误。

在您的情况下,“ORDER”表名是保留的,所以请尝试更改名称

【讨论】:

    【解决方案2】:

    order 是 oracle 中的保留字,因此您不能将其用作表名。您可以尝试使用双引号(“order”)转义,但这不是一个好习惯

    【讨论】:

      【解决方案3】:

      语法“RENAME TABLE tab_old TO tab_new”不正确。
      正确语法:“RENAME tab_old TO tab_new”。
      语句中不应出现单词“TABLE”。

      【讨论】:

      • 这对我有用!当然希望Oracle documentation 没有告诉我们语法是RENAME TABLE...
      • @Baodad 你链接了 MySQL 5.1 参考手册,而不是 Oracle 数据库文档。
      猜你喜欢
      • 2013-09-16
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      相关资源
      最近更新 更多