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:invalid table name 00903. 00000-"invalid table name" *原因:
*アクション:

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で予約語であるため、テーブル名として使用することはできません。二重引用符(「順序」)でエスケープを試すことはできますが、これは良い習慣ではありません。

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

テーブルを参照するビューまたは外部キーがある場合、テーブルの名前を変更しようとするとエラーが発生します。さらに、テーブルにチェック制約またはトリガーがある場合、名前を変更しようとするとエラーも生成されます。

そして、あなたの場合、「ORDER」テーブル名は予約されているので、名前を変更してみてください

于 2012-11-08T16:00:55.170 に答える