2012-01-19 3 views
10
ALTER TABLE testTable ADD column1 NUMBER(1) DEFAULT 0 NOT NULL AFTER column2; 

오라클에서도 mySql 구문을 사용할 수없는 이유는 무엇입니까? 위의 명령은 MySql에서 작동합니다. 당신은 저에게 동등한 것을 줄 수 있습니까? 내가 제공하는 오라클의 명령에 절 이후에 사용할 수있는 방법이 있는지Oracle에서 키워드 뒤에 테이블을 변경하십시오.


Error report: 
SQL Error: ORA-01735: invalid ALTER TABLE option 
01735. 00000 - "invalid ALTER TABLE option" 

내가 물어 무엇입니까?

+2

당신은 corrent 구문을 묻는 중이거나 그 이유를 묻는 중입니까? – cctan

+3

"Oracle에서 mySql 구문을 사용할 수없는 이유는 무엇입니까?" 내가 아는 한. MySQL은 나머지 SQL 구문과는 다른 매우 특별한 SQL 구문을 가지고있다. 거의 모든 데이터베이스 공급 업체는 SQL 표준에 가까운 구문을 사용하지만 SQL 표준은 구현하지 않습니다. 그들은 거의 모두 다르다. –

+0

@cctan : 귀하의 질문에 대한 응답으로 편집 2를 추가했습니다. –

답변

18

SQL은 관계형 대수이기 때문에. "어디에서"열이 테이블 내에 있는지에 대해 한마디도 신경 쓰지 않고 단지 존재하는 것입니다.

오라클에서 작동 시키려면 after 절을 제거하십시오. alter table에 대한 오라클 문서는 here이지만 귀결 다음 alter table 명령에 대한after 절은 없습니다

alter table testTable 
    add (column1 number(1) default 0 not null) 

.

+0

에 대한 +1 테이블 –

+7

@ Floradu88을 재현하지 않고 해당 절을 사용하고 싶다면 오라클과 상담해야합니다. 우리가 아니야. 나는 래리와 가까운 편이 아니다 :-) – paxdiablo

+0

그렇게 할 수 없습니까? –

1

이 시도 :

ALTER TABLE testTable ADD column1 NUMBER(1) DEFAULT 0 NOT NULL 
12

오라클은 테이블의 중간에 열을 추가 지원하지 않습니다 만 마지막에 추가. 데이터베이스 디자인 및 응용 프로그램 기능은 데이터베이스 스키마의 열 순서에 따라 달라서는 안됩니다. 언제나 select 문에서 순서를 지정할 수 있습니다.

그러나 어떤 이유로 테이블 중간에 새로운 열이 있으면 작업이 있습니다. SELECT 0 AS col1 새 열이며, 원래의 테이블에서 다음 필요에 따라 다른 열을 지정

CREATE TABLE tab1New AS SELECT 0 AS col1, col1 AS col2 FROM tab1; 
DROP TABLE tab1 PURGE; 
RENAME tan1New to tab1; 

. SELECT 0 AS col1을 원하는 순서대로 적절한 위치에 놓습니다.

나중에 원하는 열의 데이터 형식인지 확인하기 위해 열에 alter table 문을 실행할 수 있습니다.

관련 문제