안됩니다. 인터베이스/파이어버드에는 테이블 이름을 바꾸는 문법은 없습니다.
새 이름의 테이블을 만든 후 기존 데이터를 모두 넣는 방법을 쓰는 것이 일반적이구요.
시스템 테이블을 수정하면 편법적으로 가능하기는 한데...
연관된 모든 객체들(PK나 FK 등등)을 모두 수정해줘야 하는데 수정할 곳이 한두군데가 아닙니다.
예를 들어 다음과 같이 쿼리를 실행하고 데이터베이스 연결을 닫고 다시 연결하면 새 테이블 이름으로 바뀌어 있긴 합니다.
update rdb$relation_fields
set rdb$relation_name='TABLE_NEW'
where rdb$relation_name='TABLE_OLD';
commit;
update rdb$relations
set rdb$relation_name='TABLE_NEW'
where rdb$relation_name='TABLE_OLD';
commit;
그런데 테이블 자체는 이름이 바뀌지만 거기에 속했던 다른 모든 객체들이 미아가 됩니다.
그런데 PK나 FK 등은 시스템 테이블 여기저기에 들어가있는 곳이 많기 때문에 일일이 찾아서 수정하는 것이 너무너무
번거롭습니다.
그래도 테이블의 데이터가 너무너무너무! 많아서 꼭 이 방법을 써야 겠다면, PK나 FK 등 테이블에 의존적인 객체들을
모두 드랍시킨 후 위 방법으로 테이블 이름을 바꾸고 객체들을 다시 생성해주는 것이 최선일 겁니다.
마지막으로... 이 방법은 절대로 안전하지 않습니다. 미리 백업은 필수입니다.
그럼...
푸른솔 님이 쓰신 글 :
: 이미 만들어진 테이블 이름을 바꿀려고 하는데 방법을 잘 모르겠네요...
: 메뉴에서 Save as Table 이런 것이 있을 줄 알았는데 없군요...
: 툴은 IBExpert를 사용합니다.
:
: 필드들이 많아서 새로 만들기에는 너무 힘이 들고 또 오류가 있을 가능성도 있고......
:
: 혹시나 해서 아래 명령어를 써 봤는데.. 역시나 이군요. 오라클에서는 되는디...
: alter rename aaa to bbb
:
: 방법이 있을 것 같은데...
: 조언을 부탁드립니다.
|