FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[1611] Re:[질문] 생성된 테이블 이름을 바꿀 수 있나요?
박지훈.임프 [cbuilder] 2101 읽음    2005-10-13 20:27
안됩니다. 인터베이스/파이어버드에는 테이블 이름을 바꾸는 문법은 없습니다.
새 이름의 테이블을 만든 후 기존 데이터를 모두 넣는 방법을 쓰는 것이 일반적이구요.

시스템 테이블을 수정하면 편법적으로 가능하기는 한데...
연관된 모든 객체들(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 
:
: 방법이 있을 것 같은데...
: 조언을 부탁드립니다.

+ -

관련 글 리스트
1610 [질문] 생성된 테이블 이름을 바꿀 수 있나요? 푸른솔 1882 2005/10/13
1611     Re:[질문] 생성된 테이블 이름을 바꿀 수 있나요? 박지훈.임프 2101 2005/10/13
1613         Re:Re:[질문] 생성된 테이블 이름을 바꿀 수 있나요? 푸른솔 2606 2005/10/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.