テーブルが更新されていないことを確認

HOGEテーブル(重複行がない前提で)がテストの前後で全く変更されていないことを確認したい場合、どうするか。

create table HOGE_PREV as select * from HOGE;

で準備しておいて、テストを実行。

/* 追加・変更された行を表示。Oracleならminus */
select * from HOGE except select * from HOGE_PREV;
/* 削除・変更された行を表示。Oracleならminus */
select * from HOGE_PREV except select * from HOGE;

で両方0件ならOK。

でいいのかな? おわったら HOGE_PREV は drop してしまえばいい。この程度の機械的な手順なら自動テストにも組み込める。

Excelにデータを貼付けてマクロで比較している人がいたので、もっとましな方法がないかと思った次第。