Postgresqlについて。


テーブルAを作るときに、既にあったら、DROPしてからCREATE、なかったら、そのままCREATEしたいと思いますが、どうすればいいのでしょうか?
MYSQLのIF EXISTSのようなものはないのでしょうか?

回答の条件
  • 1人3回まで
  • 登録:2006/07/12 12:13:30
  • 終了:2006/07/12 14:47:38

回答(2件)

id:heilig_zwei No.1

heilig_zwei回答回数119ベストアンサー獲得回数132006/07/12 13:50:33

ポイント25pt

このあたりが参考になるかと思われます。

http://ns1.php.gr.jp/php-jp/archives/msg09478.html

http://ml.postgresql.jp/pipermail/pgsql-jp/2003-July/013947.html

つまりselect文でテーブルが存在するかどうか調べた後、

if文で分岐するようです。

id:iiiiiiiii

ストアドはちょっと避けたいですね。

ありがとうございます。

2006/07/12 14:46:47
id:Mook No.2

Mook回答回数1313ベストアンサー獲得回数3922006/07/12 13:59:35

ポイント45pt

無条件に、削除・作成をするのであれば、

DROP TABALE a;

CREATE TABLE a VALUES ( .... );

としてしまってはだめですか?


あるいは処理を実行する側で、テーブルがあるかどうかを判断して処理をするといった方法もあります。

例えば、PHP なら

$res = pg_query( $conn, "SELECT CASE COUNT(*) AS result FROM pg_tables WHERE tablename='a'" );

$row = pg_fetch_array( $res, 0, PGSQL_ASSOC );

if ( $row["result"] == 1 ) {

$res = pg_query( $conn, "DROP TABLE a" );

}

$res = pg_query( $conn, "CREATE TABLE a VALUES (....)" );

のような感じになるでしょうか。

id:iiiiiiiii

ありがとうございます。

この方法で行きます。

2006/07/12 14:47:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません