我正在尝试在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 - “无效的表名” *原因:
*操作:
答案 0 :(得分:33)
语法“RENAME TABLE tab_old TO tab_new
”不正确。
正确的语法:“RENAME tab_old TO tab_new
”
Word“TABLE”不应出现在声明中。
答案 1 :(得分:4)
order是oracle中的保留字,因此您不能将其用作表名。您可以尝试使用双引号(“order”)进行转义,但这不是一个好习惯
答案 2 :(得分:0)
RENAME TABLE table-Name TO new-Table-Name
如果存在引用该表的视图或外键,则尝试重命名该表将生成错误。此外,如果表上有任何检查约束或触发器,尝试重命名它也会产生错误。
在你的情况下,“ORDER”表名是RESERVED所以请尝试更改名称