2009-04-01 3 views
10

, 나는 다음과 같은 명령을 실행 해요 :왜 오라클은 내가 오른쪽 괄호를 놓쳤다 고 생각하니? 오라클 10I에서

ALTER TABLE jnrvwchnglst ADD 
    (jnrvwchnglst_userid NUMBER(10) NOT NULL DEFAULT 1) 

jnrvwchnglst 기존 테이블이고 더 jnrvwchnglst_userid 기존 열되지 않습니다.

오라클 오류 메시지는 다음과 같습니다

ORA-00907: missing right parenthesis 

이 쿼리 뭐가 잘못 됐는지, 왜 오라클은 내가 괄호를 누락 생각합니까?

+0

내 사업이 아니지만 지구상에서 그런 이름의 테이블에 무엇을 보관합니까? 주니어 Volkswagens 변경 목록? :) – Quassnoi

+1

@Quassnoi - ORM 시스템은 토큰에서 모음을 제거합니다. 오라클의 최대 (부당한) 최대 30 자이기 때문입니다. 그래서 정말로 "JoinReviewChangelist"입니다. –

답변

19
ALTER TABLE jnrvwchnglst ADD 
    (jnrvwchnglst_userid NUMBER(10) DEFAULT 1 NOT NULL) 
+0

감사! 나는 이것이 효과가 있음을 확인했다. –

0

열을 추가하고 같은 구문에서 기본/제약 조건을 설정할 수없는 곳에이 문제가 발생했습니다. '누락 된 오른쪽 괄호'는 빨간 ​​청어입니다. 오라클은 괄호와 관련이없는 경우에 오류를 사용하기를 좋아합니다 (내 생각에 파싱 논리가 00907까지 떨어집니다).

시도

ALTER TABLE jnrvwchnglst ADD (nrvwchnglst_userid NUMBER(10)); 
ALTER TABLE jnrvwchnglst ALTER (nrvwchnglst_userid SET DEFAULT 1); 
UPDATE jnrvwchnglst SET nrvwchnglst_userid = 1 WHERE nrvwchnglst_userid IS NULL; 
ALTER TABLE jnrvwchnglst ALTER (nrvwchnglst_userid SET NOT NULL); 
+1

Darn it =) 또는 단지 운영 문제가 될 수 있습니다. bah =) – JasonRShaver

+0

예를 들어 그렇습니다. TIMESTAMP. 그러나 Quassnoi의 코드가 작동합니다. 감사! –

2

"(NOT) NULL이"의 마지막 문이어야합니다 본, 그래서 오라클은 것을보고 할 때 문법적으로 "ALTER"- 그리고 다음 문자가 (당신의 "DEFAULT"STMT) 예상 종료 권리가 아니었다 ")", 오류가 발생했습니다.

+0

바라기를 이것은 왜 다른 시나리오를 해결하는 데 도움이되는지에 대한 자세한 설명입니다. – user1172173

관련 문제