• 締切済み

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

お知恵をお貸し下さい。 INSERT SELECTでデータを変更する前の状態のデータを履歴テーブルに追加してからデータを更新をしています。 現在の流れは以下の通りです。 1.検索リストから[編集]ボタンを押下して入力フォームを表示しています。  ※既に登録されているデータを各テキストボックス等に挿入された状態です。           ↓ 2.データを変更して[次へ]ボタンを押下して、入力された値を確認するページを表示しています。           ↓ 3.完了メッセージを表示して上記のINSERT SELECTの処理を実行しています。  ※一応、更新する前のデータを履歴テーブルに追加し、データも更新する事はできています。 データが何も変更されていない場合に流れの3での「INSERT SELECT」の処理を実行しないようにするにはどのような事をすればいいのでしょうか。 単純にSELECT文で全ての入力項目の値をWHERE句に指定して変更されているかを判断する方法でしょうか。 説明が下手で申し訳ありませんが理解していただけましたでしょうか。 どうか皆さん、宜しくお願いします。

みんなの回答

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.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がいまいち見えていないですが。)

関連するQ&A