6

我正在尝试在 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 -“无效的表名” *原因:
*操作:

4

3 回答 3

40

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

于 2013-07-24T15:24:22.207 回答
5

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

于 2012-11-08T16:04:34.257 回答
0
RENAME TABLE table-Name TO new-Table-Name

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

在您的情况下,“ORDER”表名已保留,因此请尝试更改名称

于 2012-11-08T16:00:55.170 回答