こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

データが変更されているかを判断するには

お知恵をお貸し下さい。

INSERT SELECTでデータを変更する前の状態のデータを履歴テーブルに追加してからデータを更新をしています。

現在の流れは以下の通りです。

1.検索リストから[編集]ボタンを押下して入力フォームを表示しています。
 ※既に登録されているデータを各テキストボックス等に挿入された状態です。
          ↓
2.データを変更して[次へ]ボタンを押下して、入力された値を確認するページを表示しています。
          ↓
3.完了メッセージを表示して上記のINSERT SELECTの処理を実行しています。
 ※一応、更新する前のデータを履歴テーブルに追加し、データも更新する事はできています。

データが何も変更されていない場合に流れの3での「INSERT SELECT」の処理を実行しないようにするにはどのような事をすればいいのでしょうか。
単純にSELECT文で全ての入力項目の値をWHERE句に指定して変更されているかを判断する方法でしょうか。

説明が下手で申し訳ありませんが理解していただけましたでしょうか。

どうか皆さん、宜しくお願いします。

投稿日時 - 2012-06-21 23:24:31

QNo.7547384

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

## どういう処理をしているのかいまいち見えていないのですが。
2.で作業用テーブルかなにかにいったん格納しているので
3.で、INSERT SELECTしているということなら、

select * from table2
EXCEPT
select * from table1
(table2は更新後のデータ/table1は更新前のデータ)
で、table1にはないtable2のデータのみが抽出されます。
つまりは、変更されてtable2のデータがtable1のデータと一致しなくなった行のみが
抽出できるということです。
(table1のみにある行は出てきませんので誤解なきよう。)

http://www.postgresql.jp/document/pg653doc/j/user/sql-select.htm
参照

以上より、
insert into table1
select * from table2
EXCEPT
select * from table1
とすればいいのかな?
(本当に書きたいSQLがいまいち見えていないですが。)

投稿日時 - 2012-06-22 23:48:26

あなたにオススメの質問