🐷
[MSAccess]データ更新時にメモリ不足の警告が出たときの注意点
結論
[MSAccess]メモリ不足の警告が出た場合は注意しないとデータの不整合が起こる。
前提
以下のようなテーブルを想定(適当)
SELECT status, COUNT(*) as 件数
FROM Employees
GROUP BY status
status | 件数 |
---|---|
Active | 1100000 |
このとき、特定の条件に従って[Status]列の値を「sleep」に変更したいと考えている。
SQLの実行
こんなSQLを作成してしまったことを想定する。(本来なら絞り込みが必要なところが抜けていたなど。)
sql UPDATE Employees SET status = "sleep"
このSQLを実行してみる。
- 警告が出る。
なるほど。
- 更新の確認ダイアログがでる。
ここで、『11万件? なにかおかしい?』と気づく。
「いいえ」を選択する。
- この状態で、もう一度statusでグループ化した結果を見る。
status | 件数 |
---|---|
Active | 55771 |
sleep | 1044229 |
お陀仏。
原因
「メモリ不足~」の警告に「はい」を選択した時点で内部的にはコミットされている(っぽい)。
そのため最終的な確認ダイアログに表示される件数にはすでにコミットされた件数も含まれており、大半は元に戻せない。メッセージが悪い。
Discussion