アプリ版:「スタンプのみでお礼する」機能のリリースについて

powergresで開発していて、困った点が出たので質問致します。

質問内容
 powergresでalter文でカラムの追加・削除等を行うと、
 追加したカラムに紐づくテーブルのデータが消えてしまったりすることはあるのか?
 (alter文でカラムを削除した時のデータ以外のデータ)
です。

なぜこんな質問をしたかというと
現在webツールからリクエストを送るとカラムの追加・削除ができるという
処理を作成しようとしています。

環境は
・Java1.5
・powergres5.0
・Apache + tomcat
です

個人的な見解では、データ削除・テーブルごと削除の命令を出さない限り
データは消えることなんてないと思っているのですが・・・・

私の能力ではお客さんに論理的に説明したいのですが、
まだ論理的に説明できない状態です。

・データが消える・消えない。
・その詳細な理由がほしいです。

大変申し訳ございませんが、よろしくお願い致します。

A 回答 (1件)

PostgreSQLの話でいいのでしょうか?



>powergresでalter文でカラムの追加・削除等を行うと

PostgreSQLに対しては、どんなalter文が生成されるのでしょうかね???

>追加したカラムに紐づくテーブルのデータが消えてしまったりすることはあるのか? (alter文でカラムを削除した時のデータ以外のデータ)

「紐づく」というのは、いろいろな解釈ができてしまうのですが。。。

列の追加や削除時、そのテーブルの他の列のことですか?
それとも、外部キー等のことでしょうか?

default値がnullの列の追加や削除では、そのテーブルの行削除や他の列が影響を受けることはありません。
一方、default値がnot nullの場合は、全行にdefault値を入れるために、削除&追加が一時的に発生するようです。

後者は、RDBMSによっては、「格納済の行がある状態でのnot nullの列追加」を禁止しているものもあります。

>・その詳細な理由がほしいです。

「詳細な理由」とは、どういう意味でしょうか?
標準SQLやPostgreSQLが、そういう仕様になっている理由ということですか?
「仕様を決めた人に聞いてください」と回答したくなってしまいますが。。。
それとも、「その仕様が書かれているマニュアル等の箇所」という意味でしょうか?

階層型DBやネットワーク型DBでは、レコードの定義やデータをそのままに残しての列の追加や削除という概念がありませんでした。
RDBでは、定義やデータ移行などの方法を大幅に柔軟にしています。その中の一つということでは?

http://www.postgresql.jp/document/pg820doc/html/ …
    • good
    • 0
この回答へのお礼

わかりにくい文で申し訳ございません・・・。

>PostgreSQLに対しては、どんなalter文が生成されるのでしょうかね???

追加のみです。

>「紐づく」というのは、いろいろな解釈ができてしまうのですが。。。
追加のイベントが起こるテーブルです。

>「詳細な理由」とは、どういう意味でしょうか?
追加した時に他のテーブルは消えないという理由でした。

追加する際、default値がnot nullのデータを追加すると
削除&追加が一時的に発生するという情報がわかり大変参考に
なりました。

本当にありがとうございました。

お礼日時:2008/02/14 10:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す