[pgsql-jp: 33067] テーブルとファンクションをりストアする場合のoid問題
yusaku matsuda
yumatuda @ msoft.co.jp
2004年 6月 1日 (火) 17:36:36 JST
いつも参考にさせて頂いております。
エムソフトの松田と申します。
下記の手順でDBをリストアした際にエラーが出て困っております。
---ここから
createdb aaa
create table test (cd text , name text);
insert into test values('01','matsuda');
CREATE FUNCTION testfunc(text) RETURNS text
AS 'select name from test
where cd = $1'
LANGUAGE 'sql';
pg_dump -t test -d aaa > poi.t
drop table test;
psql -e aaa < poi.t
pg_dump aaa > poi
dropdb aaa
createdb aaa
psql -e aaa < poi
---ここまで
とすると、最後のリストアで、
ERROR: Relation "test" does not exist
と言うエラーが表示されます。
これは、testfuncのoidがtestより大きくなっているため、と言う結論に至りました。
まず、この結論は正しいでしょうか?
そしてもう一つ、この動作に関してはこう言うものなのでしょうか?
テーブルをdropした場合は、そのテーブルを使用しているfunctionも削除し、
createし直す、と言うのが当然なのでしょうか?
度々上記の問題が起こり困っております。
対処法など教えて頂けるとありがたいです。
pgsql-jp メーリングリストの案内