🐷

[MSAccess]データ更新時にメモリ不足の警告が出たときの注意点

2024/06/26に公開

結論

[MSAccess]メモリ不足の警告が出た場合は注意しないとデータの不整合が起こる。

前提

以下のようなテーブルを想定(適当)

SELECT status, COUNT(*) as 件数
FROM Employees
GROUP BY status
status 件数
Active 1100000

このとき、特定の条件に従って[Status]列の値を「sleep」に変更したいと考えている。

SQLの実行

こんなSQLを作成してしまったことを想定する。(本来なら絞り込みが必要なところが抜けていたなど。)

sql UPDATE Employees SET status = "sleep"

このSQLを実行してみる。

  1. 警告が出る。

なるほど。

  1. 更新の確認ダイアログがでる。

ここで、『11万件? なにかおかしい?』と気づく。
「いいえ」を選択する。

  1. この状態で、もう一度statusでグループ化した結果を見る。
status 件数
Active 55771
sleep 1044229

お陀仏。

原因

「メモリ不足~」の警告に「はい」を選択した時点で内部的にはコミットされている(っぽい)。
そのため最終的な確認ダイアログに表示される件数にはすでにコミットされた件数も含まれており、大半は元に戻せない。メッセージが悪い。

Discussion