postgresql 7.3.2 입니다.
어느 한 테이블에 컬럼 데이타타입을 수정하려고 합니다.
수정하고자 하는 테이블은 다른 테이블과 on delete cascade 로 관계되어 있구요
varchar(50) -> varchar(55) 만 바꾸면 되는데 어케 해야 할까요?
새테이블을 만들어서 입력을 하면 된다는데 어떻게 정말 되는지..
혹은 dump 한후에 copy 해서 입력하면 된다는데 어케 사용하는건지...
궁금합니다 도와주세요
수고하세요
일단 해당 테이블을 모두 덤프받습니다.
pg_dump -t table_name dbname > dumpfile
dumpfile에서 테이블 스키마를 다시 원하는 모양으로 정의하고,
다음 해당 테이블을 drop 시키고,
다시 psql 에서 \i 명령으로 restore 시키면 되겠지요.
여기서 주의하셔야할 부분은 foreign key 형태의 constraint 가 걸려있는 경우는
7.3.x 에서는 SET CONSTRAINTS sql 명령이 추가 되었습니다. 이놈은 해당 테이블과 관계있는 constraints 작업들을 disable 시키거나 enable 시킬 수 있는 기능입니다.
일단 해당 테이블을
SET CONSTRAINTS constraint_name DEFERRED
로 작업을 중지 시키고 restore 하는 방법도 있습니다.
-----
질문 내용으로 보아 이부분의 설명도 꽤 어럽게 다가갈것 같은데....
http://database.sarang.net/database/postgres/manual/manual-7.3/backup.html
문서를 한번 차근히 읽어보시는 것도 도움이 될 듯싶습니다.