2012-11-08 3 views
4

oracle에서 테이블 이름을 변경하려고합니다. 내가 먼저 나는 나는이 오류 얻을Oracle 테이블 이름 변경

alter table ORDERS 
rename to ORDER; 

를 실행하려고, 테이블

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) 
); 

그것은 제대로 실행에게 선언이 스크립트를 실행 :

Error starting at line 1 in command: alter table ORDERS rename to ORDER Error report: SQL Error: ORA-00903: invalid table name 00903. 00000 - "invalid table name" *Cause:
*Action:

+2

'ORDER'는 ('order by '와 같이) 예약되었습니다. "ORDER"(또는 [ORDER]'로 바꿉니다. 오라클이 사용하는 것을 기억하지 못합니다.) –

답변

4

순서를 변경하려면 오라클에서 예약어가되어보십시오 예약되어 있습니다. 큰 따옴표 ("주문")로 이스케이프를 시도 할 수는 있지만 좋은 방법은 아닙니다.

0
RENAME TABLE table-Name TO new-Table-Name 

하는 경우가 테이블을 참조하는 뷰 또는 외부 키이므로 이름을 바꾸려고하면 오류가 발생합니다. 또한 테이블에 점검 제한 조건이나 트리거가있는 경우 이름을 YY 고 시도하면 오류가} 성됩니다.

그리고 귀하의 경우

는 "ORDER"테이블 이름은 테이블 이름으로 사용할 수 없도록 그렇게 이름을

32

구문 "RENAME TABLE tab_old TO tab_new"은 올바르지 않습니다.
올바른 구문 : "RENAME tab_old TO tab_new".
"TABLE"단어가 문장에 포함되어서는 안됩니다.

+5

이것은 나에게 트릭입니다! 물론 [Oracle 설명서] (http://docs.oracle.com/cd/E17952_01/refman-5.1-en/rename-table.html)에서 구문이 'RENAME TABLE ...'이라고하지 않았 으면 좋겠다. – Baodad

+1

@Baodad Oracle 데이터베이스 설명서가 아닌 MySQL 5.1 Reference Manual을 링크했습니다. – miazo