template1 데이타베이스 설명 |
[주 효식, http://ngd.pe.kr, nogadax@kldp.org, 2001,03,23 ] |
Test Env
|
template1 이해하기 "template1" 데이타베이스는 포스트그레스의 "initdb"명령을 통해 제일 처음 생성되는 데이타베이스이다. 새로 생성되는 데이타베이스들을 위한 기본적인 틀(template) 역할을 한다. 다음의 예에서 $PGDATA 를 삭제한다. 만약 자신의 중요한 데이타를 가지고 있는 데이타베이스가 있다면 이 예는 그냥 눈으로만 보고 따라하지 말기를 바란다. -- 주의 요망 template1 은 처음 생성되는 데이타베이스에게 자신의 속성을 제공하여 상속케한다. 또한 template1이 소유한 테이블 중 사용자가 작성한 테이블이 있다면 이 또한 새로 생성되는 데이타베이스에 상속된다. (감히 필자는 이를 상속이라 한다. 이 또한 주의 요망..) 다음은 template1의 상속 예를 보여준다. $ su - postgres $ pg_ctl stop $ rm -rf /usr/local/pgsql/data $ export PGDATA=/usr/local/pgsql/data2 $ initdb -E EUC_KR $ initlocation PGDATA2 위의 과정을 거치면서 포스트그레스는 물리적으로 서로 다른 데이타베이스 저장소를 가진다. (PGDATA, PGDTA2) $ pg_ctl start $ createlang plpgsql template1 CREATE LANGUAGE $ psql template1 ... template1=# create table temp_tab ( id_temp int4 , name_temp text ); CREATE template1=# \q $ $ createdb ngd_db1 CREATE DATABASE $ createdb ngd_db2 -D 'PGDATA2' CREATE DATABASE $ psql ngd_db1 ... ngd_db1=# \d List of relations Name | Type | Owner -----------+----------+---------- temp_tab | table | postgres (1 row) ngd_db1=# select * from pg_database; lananem |..| lancompiler ------------+--+-------------- internal |..| n/a C |..| /bin/cc sql |..| postgres plpgsql |..| PL/pgSQL (4 rows) ngd_db1=# \q $ psql ngd_db2 ... ngd_db2=# \d List of relations Name | Type | Owner -----------+----------+---------- temp_tab | table | postgres (1 row) ngd_db2=# select * from pg_database; lananem |..| lancompiler ------------+--+-------------- internal |..| n/a C |..| /bin/cc sql |..| postgres plpgsql |..| PL/pgSQL (4 rows) ngd_db2=# \q $ |