DB

ORACLE 예약어(ORA-00904 부적합한 식별자)

ORACLE DB TABLE 생성시 TABLE명이나 COLUMN 명에 ORACLE 예약어가 포함되면 ORA-00904 부적합한 식별자라는 오류가 뜬다.

근데 부적합한 식별자라는 말만 있지 왜 부적합한지라던가 하는 이유는 잘 나와있지 않다. 구글검색해보면 여러가지 결과가 나오는데 대부분이 문법오류다. 

즉, 콤마나 띄어쓰기 등의 문제로 문법오류가 나서 안되는 경우가 대부분인데 본인의 경우에는 오라클 예약어를 쓰면 안된다는(안된다기 보다는 제약이 있다) 사실을 모르고 테이블명이나 컬럼명에 예약어를 사용하여 테이블 생성이 안되었다.


예약어를 컬럼명이나 테이블명에 사용하고 싶으면 큰따옴표("")로 묶어주면 된다.


CREATE TABLE "SELECT"(..........);    와 같은 방식으로 하면 된다


개인적인 결론으론 되도록이면? 아니 아예 그냥 안쓰는게 낫다는 생각이다.

아래의 예약어 참고하면 된다.


ACCESS
ADD *
ALL *
ALTER *
AND *
ANY *
AS *
ASC *
AUDIT
BETWEEN *
BY *
CHAR *
CHECK *
CLUSTER
COLUMN
COMMENT
COMPRESS
CONNECT *
CREATE *
CURRENT *
DATE *
DECIMAL *
DEFAULT *
DELETE *
DESC *
DISTINCT *
DROP *
ELSE *
EXCLUSIVE
EXISTS
FILE
FLOAT *
FOR *
FROM *
GRANT *
GROUP *
HAVING *
IDENTIFIED
IMMEDIATE *
IN *
INCREMENT
INDEX
INITIAL
INSERT *
INTEGER *
INTERSECT *
INTO *
IS *
LEVEL *
LIKE *
LOCK
LONG
MAXEXTENTS
MINUS
MLSLABEL
MODE
MODIFY
NOAUDIT
NOCOMPRESS
NOT *
NOWAIT
NULL *
NUMBER
OF *
OFFLINE
ON *
ONLINE
OPTION *
OR *
ORDER *
PCTFREE
PRIOR *
PRIVILEGES *
PUBLIC *
RAW
RENAME
RESOURCE
REVOKE *
ROW
ROWID
ROWNUM
ROWS *
SELECT *
SESSION *
SET *
SHARE
SIZE *
SMALLINT *
START
SUCCESSFUL
SYNONYM
SYSDATE
TABLE *
THEN *
TO *
TRIGGER
UID
UNION *
UNIQUE *
UPDATE *
USER *
VALIDATE
VALUES *
VARCHAR *
VARCHAR2
VIEW *
WHENEVER *
WHERE
WITH *


http://docs.oracle.com/cd/B19306_01/server.102/b14200/ap_keywd.htm#i690190

'DB' 카테고리의 다른 글

[Oracle]DB function , procedure 내의 임의 string 찾기  (0) 2018.10.25
[ORACLE] DUAL 테이블  (0) 2017.03.12
[ORACLE]NVL함수  (0) 2017.03.10